bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [platform-testers] new snapshot available: diffutils-3.2.37-f0b0


From: Dagobert Michelsen
Subject: Re: [platform-testers] new snapshot available: diffutils-3.2.37-f0b0
Date: Fri, 2 Nov 2012 11:26:08 +0100

Hi Paul,

Am 31.10.2012 um 17:31 schrieb Paul Eggert <address@hidden>:
> Thanks, but I'm afraid that's still not enough information.
> I don't know which assertion has failed, or why.
> 
> Perhaps you can single-step through the failed programs?
> They shouldn't take long to run.

It looks like that SIGABRT does not call the callback, but crashes the process.

> unstable9s% gdb test-sigaction
> GNU gdb (GDB) 7.4.1
> Copyright (C) 2012 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "sparc-sun-solaris2.9".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from 
> /home/dam/mgar/pkg/diffutils/trunk/work/solaris9-sparc/build-isa-sparcv8/diffutils-3.2.37-f0b0/gnulib-tests/test-sigaction...done.
> (gdb) b 90
> Breakpoint 1 at 0x110ec: file test-sigaction.c, line 90.
> (gdb) r
> Starting program: 
> /home/dam/mgar/pkg/diffutils/trunk/work/solaris9-sparc/build-isa-sparcv8/diffutils-3.2.37-f0b0/gnulib-tests/test-sigaction
>  
> 
> Breakpoint 1, main () at test-sigaction.c:94
> 94        sa.sa_handler = handler;
> (gdb) n
> 96        sa.sa_flags = 0;
> (gdb) 
> 97        ASSERT (sigemptyset (&sa.sa_mask) == 0);
> (gdb) 
> 98        ASSERT (sigaction (SIGABRT, &sa, NULL) == 0);
> (gdb) 
> 99        ASSERT (raise (SIGABRT) == 0);
> (gdb) stepi
> 0x000111c0      99        ASSERT (raise (SIGABRT) == 0);
> (gdb) 
> 0x000219ac in address@hidden ()
> (gdb) step
> Single stepping until exit from function address@hidden,
> which has no line number information.
> 0xff1a0ae8 in raise () from /usr/lib/libc.so.1
> (gdb) 
> Single stepping until exit from function raise,
> which has no line number information.
> 0xff1f081c in _libc_kill () from /usr/lib/libc.so.1
> (gdb) 
> Single stepping until exit from function _libc_kill,
> which has no line number information.
> Warning:
> Cannot insert breakpoint 0.
> Error accessing memory address 0xc: I/O error.
> 
> 0x00000008 in ?? ()
> (gdb) 
> Cannot find bounds of current function
> (gdb) 
> Cannot find bounds of current function
> (gdb) 
> Cannot find bounds of current function
> (gdb) 
> Cannot find bounds of current function
> (gdb) 
> Cannot find bounds of current function
> (gdb) quit
> A debugging session is active.
> 
>         Inferior 1 [process 23220] will be killed.
> 
> Quit anyway? (y or n) y   
> unstable9s% gdb test-sigaction
> GNU gdb (GDB) 7.4.1
> Copyright (C) 2012 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "sparc-sun-solaris2.9".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from 
> /home/dam/mgar/pkg/diffutils/trunk/work/solaris9-sparc/build-isa-sparcv8/diffutils-3.2.37-f0b0/gnulib-tests/test-sigaction...done.
> (gdb) b 90
> Breakpoint 1 at 0x110ec: file test-sigaction.c, line 90.
> (gdb) step
> The program is not being run.
> (gdb) r
> Starting program: 
> /home/dam/mgar/pkg/diffutils/trunk/work/solaris9-sparc/build-isa-sparcv8/diffutils-3.2.37-f0b0/gnulib-tests/test-sigaction
>  
> 
> Breakpoint 1, main () at test-sigaction.c:94
> 94        sa.sa_handler = handler;
> (gdb) step
> 96        sa.sa_flags = 0;
> (gdb) 
> 97        ASSERT (sigemptyset (&sa.sa_mask) == 0);
> (gdb) 
> 98        ASSERT (sigaction (SIGABRT, &sa, NULL) == 0);
> (gdb) 
> 99        ASSERT (raise (SIGABRT) == 0);
> (gdb) 
> 
> Program received signal SIGABRT, Aborted.
> 0xff3dc738 in ?? ()
> (gdb) 
> Cannot find bounds of current function
> 

> unstable9s% gdb test-sigaction
> GNU gdb (GDB) 7.4.1
> Copyright (C) 2012 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "sparc-sun-solaris2.9".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from 
> /home/dam/mgar/pkg/diffutils/trunk/work/solaris9-sparc/build-isa-sparcv8/diffutils-3.2.37-f0b0/gnulib-tests/test-sigaction...done.
> (gdb) l 60
> 55      
> 56      /* This test is unsafe in the presence of an asynchronous SIGABRT,
> 57         because we install a signal-handler that is intentionally not
> 58         async-safe.  Hopefully, this does not lead to too many reports of
> 59         false failures, since people don't generally use 'kill -s SIGABRT'
> 60         to end a runaway program.  */
> 61      
> 62      static void
> 63      handler (int sig)
> 64      {
> (gdb) b 63
> Breakpoint 1 at 0x10e20: file test-sigaction.c, line 63.
> (gdb) run
> Starting program: 
> /home/dam/mgar/pkg/diffutils/trunk/work/solaris9-sparc/build-isa-sparcv8/diffutils-3.2.37-f0b0/gnulib-tests/test-sigaction
>  
> 
> Program received signal SIGABRT, Aborted.
> 0xff3dc738 in ?? ()


On test-raise.c for some obscure reason SIG_ERR is ( void ( * ) ( ) ) 0 which 
then
fails the assert as "0" usually means no error. This is because "lint" is 
defined:

> ../config.log:#define lint 1

and hence in /usr/include/sys/iso/signal_iso.h this breaks:

> #elif   defined(lint)
> 
> #define SIG_DFL (void(*)())0
> #define SIG_ERR (void(*)())0
> #define SIG_IGN (void (*)())0
> #define SIG_HOLD (void(*)())0
> 
> #else
> 
> #define SIG_DFL (void(*)())0
> #define SIG_ERR (void(*)())-1
> #define SIG_IGN (void (*)())1
> #define SIG_HOLD (void(*)())2
> 
> #endif

Undefining "lint" in lib/config.h makes this test pass immediately.

Hopefully this helps.


Best regards

  -- Dago


-- 
"You don't become great by trying to be great, you become great by wanting to 
do something,
and then doing it so hard that you become great in the process." - xkcd #896




reply via email to

[Prev in Thread] Current Thread [Next in Thread]