Bug 545859 - SIGSEGV running par2
Summary: SIGSEGV running par2
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: par2cmdline
Version: 12
Hardware: x86_64
OS: Linux
low
low
Target Milestone: ---
Assignee: Erik van Pienbroek
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 545605 (view as bug list)
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2009-12-09 14:21 UTC by Thom Carlin
Modified: 2010-02-23 05:24 UTC (History)
1 user (show)

Fixed In Version: par2cmdline-0.4.tbb.20100203-1.fc12
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2010-02-23 05:24:11 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Thom Carlin 2009-12-09 14:21:10 UTC
Description of problem:

par2 create throws SIGSEGV on specific file

Version-Release number of selected component (if applicable):


How reproducible:

Every time on that specific file

Steps to Reproduce:
1.par2 create filename
2.
3.
  
Actual results:

Starting program: /usr/bin/par2 create filename
[Thread debugging using libthread_db enabled]
[New Thread 0x7ffff7cc6710 (LWP 11345)]
par2cmdline version 0.4, Copyright (C) 2003 Peter Brian Clements.
Modifications for concurrent processing, Unicode support, and hierarchial
directory support are Copyright (c) 2007-2009 Vincent Tan.
Concurrent processing utilises Intel Thread Building Blocks 2.0,
Copyright (c) 2007-2008 Intel Corp.
Executing using the 64-bit x86 (AMD64) instruction set.

par2cmdline comes with ABSOLUTELY NO WARRANTY.

This is free software, and you are welcome to redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version. See COPYING for details.

Processing checksums and Reed-Solomon data concurrently.
Block size: 8
Source file count: 1
Source block count: 2044
Redundancy: 5%
Recovery block count: 102
Recovery file count: 7

Opening: filename

Computing Reed Solomon matrix.
Constructing: done.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7cc6710 (LWP 11345)]
loop () at ./reedsolomon-x86_64-mmx.s:64
64              movq            8(%rsi, %rcx, 1), %mm4                  # read-ahead next 8 source bytes
Current language:  auto
The current source language is "auto; currently asm".

Expected results:

No SIGSEGV

Additional info:

Backtrace

Thread 2 (Thread 0x7ffff7cc6710 (LWP 11345)):
#0  loop () at ./reedsolomon-x86_64-mmx.s:64
No locals.
#1  0x00007ffff7cc5200 in ?? ()
No symbol table info available.
#2  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 1 (Thread 0x7ffff7fcb720 (LWP 11342)):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:39
No locals.
#1  0x00000034fea0f557 in futex_wakeup_all (futex=<value optimized out>) at ../../include/tbb/machine/linux_common.h:86
No locals.
#2  try_update (futex=<value optimized out>) at ../../src/tbb/gate.h:66
        old_state = <value optimized out>
#3  mark_pool_full (futex=<value optimized out>) at ../../src/tbb/task.cpp:1429
        snapshot = <value optimized out>
#4  tbb::internal::GenericScheduler::spawn (futex=<value optimized out>) at ../../src/tbb/task.cpp:1979
        first_ptr = 0x7ffff7da7940
        link = 0x7ffff7da7938
        d = <value optimized out>
        tp = <value optimized out>
#5  0x00000034fea0b90a in spawn (child=<value optimized out>, this=<value optimized out>) at ../../include/tbb/task.h:496
No locals.
#6  tbb::internal::stage_task::execute (child=<value optimized out>, this=<value optimized out>) at ../../src/tbb/pipeline.cpp:194
        next = <value optimized out>
#7  0x00000034fea11631 in tbb::internal::CustomScheduler<tbb::internal::IntelSchedulerTraits>::wait_for_all (this=0x7ffff7dbbe80, parent=...,
    child=0x7fffffff) at ../../src/tbb/task.cpp:2225
        t_next = 0x2
        t = 0x7ffff7da7ac0
        d = 0
        parent_ctx = <value optimized out>
#8  0x00000034fea0b3d7 in spawn_and_wait_for_all (child=<value optimized out>, this=<value optimized out>) at ../../include/tbb/task.h:506
No locals.
#9  tbb::pipeline::run (child=<value optimized out>, this=<value optimized out>) at ../../src/tbb/pipeline.cpp:350
No locals.
#10 0x0000000000415af7 in Par2Creator::ProcessData (this=0x83ff00, blockoffset=<value optimized out>, blocklength=8) at par2creator.cpp:1460
        s = {<pipeline_state<create_buffer>> = {<pipeline_state_base> = {chunksize_ = 8, missingblockcount_ = 102, blocklength_ = 8, blockoffset_ = 0,
              inputblocks_ = std::vector of length 2044, capacity 2044 = {0x84a3a0, 0x84a3b8, 0x84a3d0, 0x84a3e8, 0x84a400, 0x84a418, 0x84a430,
                0x84a448, 0x84a460, 0x84a478, 0x84a490, 0x84a4a8, 0x84a4c0, 0x84a4d8, 0x84a4f0, 0x84a508, 0x84a520, 0x84a538, 0x84a550, 0x84a568,
                0x84a580, 0x84a598, 0x84a5b0, 0x84a5c8, 0x84a5e0, 0x84a5f8, 0x84a610, 0x84a628, 0x84a640, 0x84a658, 0x84a670, 0x84a688, 0x84a6a0,
                0x84a6b8, 0x84a6d0, 0x84a6e8, 0x84a700, 0x84a718, 0x84a730, 0x84a748, 0x84a760, 0x84a778, 0x84a790, 0x84a7a8, 0x84a7c0, 0x84a7d8,
                0x84a7f0, 0x84a808, 0x84a820, 0x84a838, 0x84a850, 0x84a868, 0x84a880, 0x84a898, 0x84a8b0, 0x84a8c8, 0x84a8e0, 0x84a8f8, 0x84a910,
                0x84a928, 0x84a940, 0x84a958, 0x84a970, 0x84a988, 0x84a9a0, 0x84a9b8, 0x84a9d0, 0x84a9e8, 0x84aa00, 0x84aa18, 0x84aa30, 0x84aa48,
                0x84aa60, 0x84aa78, 0x84aa90, 0x84aaa8, 0x84aac0, 0x84aad8, 0x84aaf0, 0x84ab08, 0x84ab20, 0x84ab38, 0x84ab50, 0x84ab68, 0x84ab80,
                0x84ab98, 0x84abb0, 0x84abc8, 0x84abe0, 0x84abf8, 0x84ac10, 0x84ac28, 0x84ac40, 0x84ac58, 0x84ac70, 0x84ac88, 0x84aca0, 0x84acb8,
                0x84acd0, 0x84ace8, 0x84ad00, 0x84ad18, 0x84ad30, 0x84ad48, 0x84ad60, 0x84ad78, 0x84ad90, 0x84ada8, 0x84adc0, 0x84add8, 0x84adf0,
                0x84ae08, 0x84ae20, 0x84ae38, 0x84ae50, 0x84ae68, 0x84ae80, 0x84ae98, 0x84aeb0, 0x84aec8, 0x84aee0, 0x84aef8, 0x84af10, 0x84af28,
                0x84af40, 0x84af58, 0x84af70, 0x84af88, 0x84afa0, 0x84afb8, 0x84afd0, 0x84afe8, 0x84b000, 0x84b018, 0x84b030, 0x84b048, 0x84b060,
                0x84b078, 0x84b090, 0x84b0a8, 0x84b0c0, 0x84b0d8, 0x84b0f0, 0x84b108, 0x84b120, 0x84b138, 0x84b150, 0x84b168, 0x84b180, 0x84b198,
                0x84b1b0, 0x84b1c8, 0x84b1e0, 0x84b1f8, 0x84b210, 0x84b228, 0x84b240, 0x84b258, 0x84b270, 0x84b288, 0x84b2a0, 0x84b2b8, 0x84b2d0,
                0x84b2e8, 0x84b300, 0x84b318, 0x84b330, 0x84b348, 0x84b360, 0x84b378, 0x84b390, 0x84b3a8, 0x84b3c0, 0x84b3d8, 0x84b3f0, 0x84b408,
                0x84b420, 0x84b438, 0x84b450, 0x84b468, 0x84b480, 0x84b498, 0x84b4b0, 0x84b4c8, 0x84b4e0, 0x84b4f8, 0x84b510, 0x84b528, 0x84b540,
                0x84b558, 0x84b570, 0x84b588, 0x84b5a0, 0x84b5b8, 0x84b5d0, 0x84b5e8, 0x84b600, 0x84b618, 0x84b630, 0x84b648...}, inputindex_ = 2,
              inputblock_ = 0x84a3d0, inputblock_mutex_ = {static is_rw_mutex = <optimized out>, static is_recursive_mutex = <optimized out>,
                static is_fair_mutex = <optimized out>, impl = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0,
                    __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}},
              totalwritten_ = {<tbb::internal::atomic_impl<unsigned long, unsigned long, 1ul>> = {<tbb::internal::atomic_base<unsigned long>> = {
                    my_value = 0}, <No data fields>}, <No data fields>}, openfiles_ = {<tbb::internal::hash_map_base> = {
                  static n_segment_bits = <optimized out>, static n_segment = <optimized out>, static max_physical_size = <optimized out>},
                my_allocator = {<No data fields>}, my_hash_compare = {<No data fields>}, my_segment = 0x7ffff7d9b600}, ok_ = true},
            inputbuffers_ = std::vector of length 2, capacity 2 = {{<pipeline_buffer> = {<rcbuffer> = {<buffer> = {
                      buffer_ = 0x7ffff7da3f80 "BZh91AY&"},
                    refcount_ = {<tbb::internal::atomic_impl<int, int, 1ul>> = {<tbb::internal::atomic_base<int>> = {
                          my_value = 1}, <No data fields>}, <No data fields>}}, aiocb_ = {<aiocb> = {aio_fildes = 64, aio_lio_opcode = 0,
                      aio_reqprio = 6539680, aio_buf = 0x31c72fd160, aio_nbytes = 213725810697, aio_sigevent = {sigev_value = {sival_int = 0,
                          sival_ptr = 0x0}, sigev_signo = -1022951085, sigev_notify = 49, _sigev_un = {_pad = {19, 0, -1019795584, 49, 20, 0,
                            -134234112, 32767, -953168320, 49, -1022945547, 49}, _tid = 19, _sigev_thread = {_function = 0x13,
                            _attribute = 0x31c3372780}}}, __next_prio = 0x63c9a8, __abs_prio = -1019795584, __policy = 49, __error_code = 10,
                      __return_value = 10, aio_offset = 213795196480, __pad = 0x7ffff7d97e98 "\b\n\a\303\061",
                      __unused = "\b\n\a\303\061\000\000\000\200'7\303\061\000\000\000\320\377\203\000\000\000\000\000\n\000\000\000\000\000\000"}, <No data fields>}, inputindex_ = 0, write_status_ = NONE}, sourcefile_ = 0x83feb0, sourceindex_ = 0}, {<pipeline_buffer> = {<rcbuffer> = {<buffer> = {
                      buffer_ = 0x7ffff7da3f00 "SY\211W\263U\001d"},
                    refcount_ = {<tbb::internal::atomic_impl<int, int, 1ul>> = {<tbb::internal::atomic_base<int>> = {
                          my_value = 2}, <No data fields>}, <No data fields>}}, aiocb_ = {<aiocb> = {aio_fildes = 64, aio_lio_opcode = 0,
                      aio_reqprio = 6539680, aio_buf = 0x31c72fd160, aio_nbytes = 213725810697, aio_sigevent = {sigev_value = {sival_int = 0,
                          sival_ptr = 0x0}, sigev_signo = -1022951085, sigev_notify = 49, _sigev_un = {_pad = {19, 0, -1019795584, 49, 20, 0,
                            -134234112, 32767, -953168320, 49, -1022945547, 49}, _tid = 19, _sigev_thread = {_function = 0x13,
                            _attribute = 0x31c3372780}}}, __next_prio = 0x63c9a8, __abs_prio = -1019795584, __policy = 49, __error_code = 10,
                      __return_value = 10, aio_offset = 213795196480, __pad = 0x7ffff7d97f68 "\b\n\a\303\061",
                      __unused = "\b\n\a\303\061\000\000\000\200'7\303\061\000\000\000\320\377\203\000\000\000\000\000\n\000\000\000\000\000\000"}, <No data fields>}, inputindex_ = 1, write_status_ = NONE}, sourcefile_ = 0x83feb0, sourceindex_ = 1}}, inputbuffersidx_ = 0},
          sourcefiles_ = std::vector of length 1, capacity 1 = {0x83feb0}, sourcefile_ = 0x83feb0, sourceindex_ = 2, deferhashcomputation_ = true,
          shm_ = {<tbb::internal::hash_map_base> = {static n_segment_bits = <optimized out>, static n_segment = <optimized out>,
              static max_physical_size = <optimized out>}, my_allocator = {<No data fields>}, my_hash_compare = {<No data fields>},
            my_segment = 0x7ffff7d9ab80}}
        cfr = {<filter_read_base<create_filter_read, create_buffer>> = {<tbb::filter> = {_vptr.filter = 0x4332b0,
              next_filter_in_pipeline = 0x7fffffffe0a0, input_buffer = 0x84a270, my_filter_mode = 3 '\003', prev_filter_in_pipeline = 0x0,
              my_pipeline = 0x7fffffffe120}, state_ = @0x7fffffffe250}, <No data fields>}
        cfp = {<filter_process_base<create_filter_process, create_buffer, Par2Creator>> = {<tbb::filter> = {_vptr.filter = 0x4333d0,
              next_filter_in_pipeline = 0x0, input_buffer = 0x0, my_filter_mode = 2 '\002', prev_filter_in_pipeline = 0x7fffffffe0e0,
              my_pipeline = 0x7fffffffe120}, delegate_ = @0x83ff00, state_ = @0x7fffffffe250}, <No data fields>}
        sourceblocks_ = std::vector of length 2044, capacity 2044 = {0x84a3a0, 0x84a3b8, 0x84a3d0, 0x84a3e8, 0x84a400, 0x84a418, 0x84a430, 0x84a448,
          0x84a460, 0x84a478, 0x84a490, 0x84a4a8, 0x84a4c0, 0x84a4d8, 0x84a4f0, 0x84a508, 0x84a520, 0x84a538, 0x84a550, 0x84a568, 0x84a580, 0x84a598,
          0x84a5b0, 0x84a5c8, 0x84a5e0, 0x84a5f8, 0x84a610, 0x84a628, 0x84a640, 0x84a658, 0x84a670, 0x84a688, 0x84a6a0, 0x84a6b8, 0x84a6d0, 0x84a6e8,
          0x84a700, 0x84a718, 0x84a730, 0x84a748, 0x84a760, 0x84a778, 0x84a790, 0x84a7a8, 0x84a7c0, 0x84a7d8, 0x84a7f0, 0x84a808, 0x84a820, 0x84a838,
          0x84a850, 0x84a868, 0x84a880, 0x84a898, 0x84a8b0, 0x84a8c8, 0x84a8e0, 0x84a8f8, 0x84a910, 0x84a928, 0x84a940, 0x84a958, 0x84a970, 0x84a988,
          0x84a9a0, 0x84a9b8, 0x84a9d0, 0x84a9e8, 0x84aa00, 0x84aa18, 0x84aa30, 0x84aa48, 0x84aa60, 0x84aa78, 0x84aa90, 0x84aaa8, 0x84aac0, 0x84aad8,
          0x84aaf0, 0x84ab08, 0x84ab20, 0x84ab38, 0x84ab50, 0x84ab68, 0x84ab80, 0x84ab98, 0x84abb0, 0x84abc8, 0x84abe0, 0x84abf8, 0x84ac10, 0x84ac28,
          0x84ac40, 0x84ac58, 0x84ac70, 0x84ac88, 0x84aca0, 0x84acb8, 0x84acd0, 0x84ace8, 0x84ad00, 0x84ad18, 0x84ad30, 0x84ad48, 0x84ad60, 0x84ad78,
          0x84ad90, 0x84ada8, 0x84adc0, 0x84add8, 0x84adf0, 0x84ae08, 0x84ae20, 0x84ae38, 0x84ae50, 0x84ae68, 0x84ae80, 0x84ae98, 0x84aeb0, 0x84aec8,
          0x84aee0, 0x84aef8, 0x84af10, 0x84af28, 0x84af40, 0x84af58, 0x84af70, 0x84af88, 0x84afa0, 0x84afb8, 0x84afd0, 0x84afe8, 0x84b000, 0x84b018,
          0x84b030, 0x84b048, 0x84b060, 0x84b078, 0x84b090, 0x84b0a8, 0x84b0c0, 0x84b0d8, 0x84b0f0, 0x84b108, 0x84b120, 0x84b138, 0x84b150, 0x84b168,
          0x84b180, 0x84b198, 0x84b1b0, 0x84b1c8, 0x84b1e0, 0x84b1f8, 0x84b210, 0x84b228, 0x84b240, 0x84b258, 0x84b270, 0x84b288, 0x84b2a0, 0x84b2b8,
          0x84b2d0, 0x84b2e8, 0x84b300, 0x84b318, 0x84b330, 0x84b348, 0x84b360, 0x84b378, 0x84b390, 0x84b3a8, 0x84b3c0, 0x84b3d8, 0x84b3f0, 0x84b408,
          0x84b420, 0x84b438, 0x84b450, 0x84b468, 0x84b480, 0x84b498, 0x84b4b0, 0x84b4c8, 0x84b4e0, 0x84b4f8, 0x84b510, 0x84b528, 0x84b540, 0x84b558,
          0x84b570, 0x84b588, 0x84b5a0, 0x84b5b8, 0x84b5d0, 0x84b5e8, 0x84b600, 0x84b618, 0x84b630, 0x84b648...}
        max_tokens = <value optimized out>
        p = {_vptr.pipeline = 0x34fec18770, filter_list = 0x7fffffffe0e0, filter_end = 0x7fffffffe0a0, end_counter = 0x7ffff7da7c40,
          input_tokens = {<tbb::internal::atomic_impl<unsigned long, unsigned long, 1ul>> = {<tbb::internal::atomic_base<unsigned long>> = {
                my_value = 0}, <No data fields>}, <No data fields>}, token_counter = 2, end_of_input = false}
#11 0x000000000041974a in Par2Creator::Process (this=0x83ff00, commandline=<value optimized out>) at par2creator.cpp:407
        blocklength = 8
        blockoffset = 0
        extrafiles = <value optimized out>
        redundancy = 5
        par2filename = "filename"
        memorylimit = 2044
#12 0x0000000000404490 in main (argc=<value optimized out>, argv=0x7fffffffe4e8) at par2cmdline.cpp:110
        init = {<tbb::internal::no_copy> = {<No data fields>}, my_scheduler = 0x7ffff7dbbe80, static automatic = <optimized out>,
          static deferred = <optimized out>}
        result = <value optimized out>

Comment 1 Erik van Pienbroek 2009-12-09 15:14:57 UTC
Could you please try again with the latest version of tbb installed? http://koji.fedoraproject.org/koji/buildinfo?buildID=139584

Comment 2 Thom Carlin 2009-12-09 15:44:06 UTC
Tried with tbb-2.2-1.20090809.fc13.x86_64.rpm - Similar results (edited for brevity):
...
/usr/bin/par2: Symbol `_ZTIN3tbb6filterE' has different size in shared object, consider re-linking
...
Constructing: done.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7a91710 (LWP 13115)]
loop () at ./reedsolomon-x86_64-mmx.s:82
82              movq            %mm1, 0(%rdi, %rcx, 1)
...


Thread 2 (Thread 0x7ffff7a91710 (LWP 13115)):
#0  loop () at ./reedsolomon-x86_64-mmx.s:82
No locals.
#1  0x00007ffff7a901b0 in ?? ()
No symbol table info available.
#2  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 1 (Thread 0x7ffff7da8720 (LWP 13112)):
#0  loop () at ./reedsolomon-x86_64-mmx.s:66
No locals.
#1  0x00007fffffffd1d0 in ?? ()
No symbol table info available.
#2  0x0000000000000000 in ?? ()
No symbol table info available.

Comment 3 Thom Carlin 2010-02-01 04:00:43 UTC
*** Bug 549007 has been marked as a duplicate of this bug. ***

Comment 4 Thom Carlin 2010-02-01 04:03:23 UTC
*** Bug 545605 has been marked as a duplicate of this bug. ***

Comment 5 Thom Carlin 2010-02-01 04:09:32 UTC
Currently, upstream believes this is due to the file size.  Attempting to reproduce issue.

Comment 6 Thom Carlin 2010-02-05 09:51:44 UTC
Upstream released new version (20100203) available at http://www.chuchusoft.com/par2_tbb/download.html.

Comment 7 Fedora Update System 2010-02-05 12:57:36 UTC
par2cmdline-0.4.tbb.20100203-1.fc12 has been submitted as an update for Fedora 12.
http://admin.fedoraproject.org/updates/par2cmdline-0.4.tbb.20100203-1.fc12

Comment 8 Fedora Update System 2010-02-05 23:57:01 UTC
par2cmdline-0.4.tbb.20100203-1.fc12 has been pushed to the Fedora 12 testing repository.  If problems still persist, please make note of it in this bug report.
 If you want to test the update, you can install it with 
 su -c 'yum --enablerepo=updates-testing update par2cmdline'.  You can provide feedback for this update here: http://admin.fedoraproject.org/updates/F12/FEDORA-2010-1524

Comment 9 Fedora Update System 2010-02-23 05:24:00 UTC
par2cmdline-0.4.tbb.20100203-1.fc12 has been pushed to the Fedora 12 stable repository.  If problems still persist, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.