bug-tar
[Top][All Lists]
Advanced

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

Re: [Bug-tar] Small bug in tar-1.29


From: Jack Howarth
Subject: Re: [Bug-tar] Small bug in tar-1.29
Date: Tue, 6 Sep 2016 18:48:23 -0400
User-agent: Mutt/1.5.18 (2008-05-17)

On Tue, Sep 06, 2016 at 04:12:12PM -0400, Jack Howarth wrote:
> On Tue, Sep 06, 2016 at 08:12:05PM +0100, Ralph Corderoy wrote:
> > Hi Jack,
> > 
> > > > gnutar: Child died with signal 11
> > ...
> > > stop reason = signal SIGPIPE
> > 
> > SIGPIPE is 13.  We want 11, SIGSEGV.  Perhaps a "c" or two for continue
> > will have the debugger carry on until the SEGV bites.
> 
> $ ulimit -c unlimited
> $ gnutar -zcvf test_data.tar.gz test_data 
> test_data/
> test_data/.noe.tbl.swp
> test_data/dihedral.tbl
> test_data/file.nam
> test_data/io.mc
> test_data/noe.tbl
> gnutar: test_data.tar.gz: Cannot write: Broken pipe
> gnutar: Child died with signal 11
> gnutar: Error is not recoverable: exiting now
> $ lldb -c /cores/core.21601 `which gnutar`
> (lldb) target create "/opt/local/bin/gnutar" --core "/cores/core.21601"
> warning: (x86_64) /cores/core.21601 load command 84 LC_SEGMENT_64 has a 
> fileoff + filesize (0x296fe000) that extends beyond the end of the file 
> (0x296fd000), the segment will be truncated to match
> Core file '/cores/core.21601' (x86_64) was loaded.
> (lldb) bt
> * thread #1: tid = 0x0000, 0x00007fff94ebb6d7 
> libdispatch.dylib`_dispatch_queue_push_queue + 463, stop reason = signal 
> SIGSTOP
>   * frame #0: 0x00007fff94ebb6d7 libdispatch.dylib`_dispatch_queue_push_queue 
> + 463
>     frame #1: 0x00007fff7478c4d0 libdispatch.dylib`_OS_dispatch_mach_vtable + 
> 48
>     frame #2: 0x00007fff94eb9b06 
> libdispatch.dylib`_dispatch_queue_wakeup_with_qos_slow + 126
>     frame #3: 0x00007fff94ec013f libdispatch.dylib`_dispatch_mach_msg_send + 
> 1952
>     frame #4: 0x00007fff94ebf8dc libdispatch.dylib`dispatch_mach_send + 262
>     frame #5: 0x00007fff89448fc9 
> libxpc.dylib`xpc_connection_send_message_with_reply + 131
>     frame #6: 0x00007fff8e31ebdf CoreFoundation`__66-[CFPrefsSearchListSource 
> generationCountFromListOfSources:count:]_block_invoke_2 + 143
>     frame #7: 0x00007fff8e31ea0d CoreFoundation`_CFPrefsWithDaemonConnection 
> + 381
>     frame #8: 0x00007fff8e31db96 CoreFoundation`__66-[CFPrefsSearchListSource 
> generationCountFromListOfSources:count:]_block_invoke + 150
>     frame #9: 0x00007fff8e31d933 CoreFoundation`-[CFPrefsSearchListSource 
> generationCountFromListOfSources:count:] + 179
>     frame #10: 0x00007fff8e31d214 CoreFoundation`-[CFPrefsSearchListSource 
> alreadylocked_copyDictionary] + 324
>     frame #11: 0x00007fff8e31ce5c CoreFoundation`-[CFPrefsSearchListSource 
> alreadylocked_copyValueForKey:] + 60
>     frame #12: 0x00007fff8e31cdec 
> CoreFoundation`___CFPreferencesCopyAppValueWithContainer_block_invoke + 60
>     frame #13: 0x00007fff8e314b10 CoreFoundation`+[CFPrefsSearchListSource 
> withSearchListForIdentifier:container:perform:] + 608
>     frame #14: 0x00007fff8e314867 
> CoreFoundation`_CFPreferencesCopyAppValueWithContainer + 183
>     frame #15: 0x00000001021a6538 
> libintl.8.dylib`_nl_language_preferences_default + 70
>     frame #16: 0x00000001021a462f libintl.8.dylib`libintl_dcigettext + 667
>     frame #17: 0x00000001021491f2 gnutar`sys_child_open_for_compress + 125
>     frame #18: 0x000000010213011f gnutar`open_archive + 603
>     frame #19: 0x00000001021355ab gnutar`create_archive + 67
>     frame #20: 0x000000010214b494 gnutar`main + 3510
>     frame #21: 0x00007fff895605ad libdyld.dylib`start + 1
>     frame #22: 0x00007fff895605ad libdyld.dylib`start + 1
> (lldb)
> 

Using the same approach that I took in http://savannah.gnu.org/bugs/?46261 to 
determine that the threading in the CoreFoundation
framework linked through libintl was causing breakage on darwin15 in make 
4.0/4,1...

rebuilding gettext with the additional configure options...

gt_cv_func_CFPreferencesCopyAppValue=no \ 
gt_cv_func_CFLocaleCopyCurrent=no \ 
gt_cv_func_CFPreferencesCopyAppValue=no \ 
gt_cv_func_CFLocaleCopyCurrent=no 

to change the linkage from....

$ otool -L /opt/local/lib/libintl.8.dylib
/opt/local/lib/libintl.8.dylib:
        /opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current 
version 10.5.0)
        /opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current 
version 8.1.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
version 1226.10.1)
        
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 
(compatibility version 150.0.0, current version 1258.1.0)

$ otool -L /opt/local/lib/libintl.8.dylib
/opt/local/lib/libintl.8.dylib:
        /opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current 
version 10.5.0)
        /opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current 
version 8.1.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
version 1226.10.1)

does indeed suppress the bug in tar 1.29 when LANG is unset. In the case of 
make, this was fixed by
the addition of pselect() calls to protect the threads before forking...

http://git.savannah.gnu.org/cgit/make.git/commit/?id=85c788572d054bc2c41b84007875edbd37ad3ed5

[SV 46261] Use pselect() for jobserver where supported.
* Makefile.am, configure.ac: Check for pselect() and sys/select.h.
* main.c (main): Block SIGCHLD if we have pselect() support.
* posixos.c (jobserver_acquire): If we support pselect() then use
it to query the jobserver pipe, while also listening for SIGCHLD.
Also pselect() supports a timeout so avoid alarm() calls.

Perhaps something similar needs to be done for the xpipe() call in tar 1.29?
> 
> > 
> > -- 
> > Cheers, Ralph.
> > https://plus.google.com/+RalphCorderoy



reply via email to

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