Subject: bug#60457: closed (Re: [bug-diffutils] bug#60457: Test failure (color) with UBSAN)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 01 Jan 2023 05:03:03 +0000

Your bug report

#60457: Test failure (color) with UBSAN

which was filed against the diffutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
60457: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=60457
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug-diffutils] bug#60457: Test failure (color) with UBSAN
From: Paul Eggert <[email-masked]>
To: Sam James <[email-masked]>
Cc: [email-masked]
Date: Sat, 31 Dec 2022 21:02:44 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Thanks for reporting that. I installed the attached which should fix it.

From 73799908453a5ef96bf80843668653f0229ad76f Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email-masked]>
Date: Sat, 31 Dec 2022 18:56:33 -0800
Subject: [PATCH] maint: fix assumption typo
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fix a typo I introduced in my August 2021 signal handling fixes.
Problem reported by Sam James (Bug#60457).
* src/util.c (xsigismember): Don’t assume sigismember cannot return 0.
---
 src/util.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/util.c b/src/util.c
index d2fd5ca..e4d7240 100644
--- a/src/util.c
+++ b/src/util.c
@@ -202,7 +202,7 @@ xsigismember (sigset_t const *set, int sig)
   int mem = sigismember (set, sig);
   if (mem < 0)
     pfatal_with_name ("sigismember");
-  assume (mem == 1);
+  assume (mem <= 1);
   return mem;
 }
 
-- 
2.37.2

Subject: Test failure (color) with UBSAN
From: Sam James <[email-masked]>
To: [email-masked]
Date: Sat, 31 Dec 2022 21:54:15 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi folks,

I'm testing out the latest release previews from platform-testers in Gentoo and came across the following.

diffutils' tests seem to fail (specifically the 'color' test) when built with UBSAN (-fsanitize=undefined):
```
[...]
+ mkfifo fifo
+ printf %1000000s-a
+ printf %1000000s-b
+ + diff --color=always ---presume-output-tty a bhead
 -c 10
util.c:205:3: runtime error: execution reached an unreachable program point
    #0 0x558fa0c7ee3c in xsigismember /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/src/util.c:205
    #1 0x558fa0c7f4e5 in install_signal_handlers /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/src/util.c:372
    #2 0x558fa0c80f05 in check_color_output /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/src/util.c:822
    #3 0x558fa0c81976 in begin_output /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/src/util.c:1017
    #4 0x558fa0c7c63d in print_normal_hunk /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/src/normal.c:49
    #5 0x558fa0c82cd1 in print_script /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/src/util.c:1303
    #6 0x558fa0c7c5e5 in print_normal_script /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/src/normal.c:31
    #7 0x558fa0c640cc in diff_2_files /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/src/analyze.c:665
    #8 0x558fa0c6f28c in compare_files /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/src/diff.c:1488
    #9 0x558fa0c69e11 in main /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/src/diff.c:851
    #10 0x7fb6ab79664f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #11 0x7fb6ab796708 in __libc_start_main_impl ../csu/libc-start.c:381
    #12 0x558fa0c5a144 in _start ../sysdeps/x86_64/start.S:115

+ test 1 = 141
+ fail=1
+ Exit 1
+ set +e
+ exit 1
+ exit 1
+ remove_tmp_
+ __st=1
+ cleanup_
+ :
+ test  = yes
+ cd /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/tests
+ chmod -R u+rwx /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/tests/gt-colors.1cSV
+ rm -rf /var/tmp/portage/sys-apps/diffutils-3.8_p20221230/work/diffutils-3.8.43-2d50/tests/gt-colors.1cSV
+ exit 1
FAIL colors (exit status: 1)

============================================================================
Testsuite summary for GNU diffutils 3.8.43-2d50
============================================================================
# TOTAL: 23
# PASS:  21
# SKIP:  0
# XFAIL: 1
# FAIL:  1
# XPASS: 0
# ERROR: 0
============================================================================
See tests/test-suite.log
Please report to [email-masked]
============================================================================
```

This is with GCC 12.2.1_p20221224.

I've made the full log available at https://dev.gentoo.org/~sam/bugs/diffutils/ubsan-color-test/build.log
and https://dev.gentoo.org/~sam/bugs/diffutils/ubsan-color-test/test-suite.log.

Let me know if more information is required.

Best,
sam