Compile on Severn, runs on RH9, segfaults on Severn

Julio Sanchez j.sanchezf at terra.es
Mon Sep 8 15:22:10 UTC 2003


Hi,

I have been having problems with transcode on Severn.  I recently posted
what follows at one of their lists.  I have no idea about what the problem
is, whether it is a bug with Severn or under what component to file it in
bugzilla.  In case some can help me diagnose it better, I insert the
message here:

--------------------   CUT HERE   -----------------------------------
There are multiple cases in which transcode dies in RedHat Severn beta.
After some experimentation, I have found a repetitive pattern.

To put things in context, the RedHat beta kernel is using the new posix
threads system and programs get that environment by default.  It is
possible to affect the environment a program sees by messing with the
LD_ASSUME_KERNEL environment library.  For instance, setting it to 2.4.5
supposedly permits programs that depend on old implementations to run
correctly (though I ignore how faithful is the illusion).

Transcode dies in some cases (not all, but it is repeatable when it
does) on both environments and, moreover, the same invocations that die
under one environment seem to die on the other and vice-versa. But,
since gdb does not produce useful data when running on the default
environment, I have studied the problem setting LD_ASSUME_KERNEL to
2.4.5.

I have traced two cases and both share one characteristic: they involve
dynamic loading.  This is one example:

(gdb) run -q3 -i /dosc/fotos/Tenerife2003/Dia2/dscn1004.mov -x mov,null -y null
Starting program: /var/tmp/j_sanchez/rpm/BUILD/transcode-0.6.9/src/transcode -q3 -i /dosc/fotos/Tenerife2003/Dia2/dscn1004.mov -x mov,null -y null
[Thread debugging using libthread_db enabled]
[New Thread 16384 (LWP 6669)]
[New Thread 32769 (LWP 6670)]
[New Thread 16386 (LWP 6671)]
transcode v0.6.9 (C) 2001-2003 Thomas Oestreich
[tcprobe] Apple QuickTime movie file
(probe.c) suggested AV correction -D 0 (0 ms) | AV 0 ms | 0 ms
(probe.c) V magic=0x19, A magic=0x19, V codec=0x0, A codec=0x0
(probe.c) V magic=QuickTime, A magic=QuickTime, V codec=unknown, A codec=unknown[transcode] auto-probing source /dosc/fotos/Tenerife2003/Dia2/dscn1004.mov (ok)
[transcode] V: import format    | unknown QuickTime (V=mov|A=null)
[transcode] V: import frame     | 320x240  1.33:1
[transcode] V: bits/pixel       | 1.562
[transcode] V: decoding fps,frc | 15.000,13
[transcode] A: import format    | 0x2001  AC3/A52      [   0,16,0]
[transcode] A: export           | disabled
[transcode] V: encoding fps,frc | 15.000,13
[transcode] A: bytes per frame  | 0 (0.000000)
[transcode] A: adjustment       | 0 at 1000
[transcode] V: IA32 accel mode  | sse2 (sse2 sse mmxext mmx asm)
[transcode] warning : no option -o found, encoded frames send to "/dev/null"
[transcode] encoder delay = decode=10000 encode=10000 usec
[transcode] V: video buffer     | 10 @ 320x240
[transcode] allocating 10 framebuffer (static)
loading audio import module /usr/lib/transcode/import_null.so
loading video import module /usr/lib/transcode/import_mov.so
[import_null.so] v0.2.0 (2002-01-19) (video) null | (audio) null
(decoder.c) audio capability flag 0xffffffff | 0x1
[import_mov.so] v0.1.2 (2002-05-16) (video) * | (audio) *
(decoder.c) video capability flag 0xb | 0x1
loading audio export module /usr/lib/transcode/export_null.so
loading video export module /usr/lib/transcode/export_null.so
[export_null.so] v0.1.2 (2001-08-17) (video) null | (audio) null
(encoder.c) audio capability flag 0xffffffff | 0x1
(encoder.c) video capability flag 0xffffffff | 0x1
[transcode] starting 1 frame processing thread(s)
[New Thread 32771 (LWP 6673)]
[transcode] starting 1 frame processing thread(s)
[New Thread 49156 (LWP 6674)]
[import_mov.so] codec=jpeg, fps=15.000, width=320, height=240
[New Thread 65541 (LWP 6675)]
[New Thread 81926 (LWP 6676)]
(decoder.c) video thread id=81926
(decoder.c) audio thread id=65541
[New Thread 98311 (LWP 6677)]
  
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 6669)]
0x400093c2 in do_lookup_versioned () from /lib/ld-linux.so.2
(gdb) b
Breakpoint 1 at 0x400093c2
(gdb) bt
#0  0x400093c2 in do_lookup_versioned () from /lib/ld-linux.so.2
#1  0x40008563 in _dl_lookup_versioned_symbol_internal ()
   from /lib/ld-linux.so.2
#2  0x4000c33f in fixup () from /lib/ld-linux.so.2
#3  0x4000c4b0 in _dl_runtime_resolve () from /lib/ld-linux.so.2
#4  0x080720e7 in counter_init (t1=0x89906989, t2=0x89906989) at counter.c:47
#5  0x0805a44d in encoder (vob=0x98dd740, frame_a=0, frame_b=2147483647)
    at encoder.c:702
#6  0x08054c5d in main (argc=8, argv=0xbfec2f64) at transcode.c:3430

This is the second, trying to extract the image from a VCD MPEG still:

Starting program: /var/tmp/j_sanchez/rpm/BUILD/transcode-0.6.9/src/transcode -q3 -i /dosc/fotos/tmp/__dosc_fotos_Tenerife2003_Dia2_dscn1005_image_pal_h.m1p -y im -o kk
[Thread debugging using libthread_db enabled]
[New Thread 16384 (LWP 6950)]
[New Thread 32769 (LWP 6951)]
[New Thread 16386 (LWP 6952)]
transcode v0.6.9 (C) 2001-2003 Thomas Oestreich
[tcprobe] MPEG program stream (PS)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
SCR=       0 (       0) unit=0 @ offset     0.0000 (sec)
att0=0, att1=0
(probe.c) suggested AV correction -D 0 (0 ms) | AV 0 ms | 0 ms
(probe.c) V magic=0xf3, A magic=0xf3, V codec=0x1000000, A codec=0x0
(probe.c) V magic=, A magic=, V codec=MPEG  , A codec=unknown
[transcode] auto-probing source /dosc/fotos/tmp/__dosc_fotos_Tenerife2003_Dia2_dscn1005_image_pal_h.m1p (ok)
[transcode] V: import format    | MPEG    (V=mpeg2|A=null)
[transcode] V: AV demux/sync    | (0) sync AV at PTS start - demuxer disabled
[transcode] V: import frame     | 352x288  1.22:1  encoded @ 4:3
[transcode] V: bits/pixel       | 0.710
[transcode] V: decoding fps,frc | 25.000,3
[transcode] A: import format    | 0x2001  AC3/A52      [   0,16,0]
[transcode] A: export format    | 0x55    MPEG layer-3 [   0,16,0]  128 kbps
[transcode] V: encoding fps,frc | 25.000,3
[transcode] A: bytes per frame  | 0 (0.000000)
[transcode] A: adjustment       | 0 at 1000
[transcode] V: IA32 accel mode  | sse2 (sse2 sse mmxext mmx asm)
[transcode] encoder delay = decode=40000 encode=40000 usec
[transcode] V: video buffer     | 10 @ 352x288
[transcode] allocating 10 framebuffer (static)
loading audio import module /usr/lib/transcode/import_null.so
loading video import module /usr/lib/transcode/import_mpeg2.so
[import_null.so] v0.2.0 (2002-01-19) (video) null | (audio) null
(decoder.c) audio capability flag 0xffffffff | 0x1
[import_mpeg2.so] v0.3.0 (2002-12-05) (video) MPEG2
(decoder.c) video capability flag 0xa | 0x1
loading audio export module /usr/lib/transcode/export_im.so
loading video export module /usr/lib/transcode/export_im.so
[export_im.so] v0.0.3 (2003-06-05) (video) *
(encoder.c) audio capability flag 0x1b | 0x1
(encoder.c) video capability flag 0x1b | 0x1
[transcode] starting 1 frame processing thread(s)
[New Thread 32771 (LWP 6954)]
[transcode] starting 1 frame processing thread(s)
[New Thread 49156 (LWP 6955)]
[import_mpeg2.so] tcextract -x mpeg2 -i "/dosc/fotos/tmp/__dosc_fotos_Tenerife2003_Dia2_dscn1005_image_pal_h.m1p" -d 3 | tcdecode -x mpeg2 -d 3
[tcextract] (pid=6957) MPEG program stream (PS)
[tcextract] (pid=6957) starting, doing mpeg2
Using MMXEXT for motion compensation
Using MMXEXT for IDCT transform
[tcextract] (pid=6957) exit [tcextract] exit code (0)
[New Thread 65541 (LWP 6959)]
(decoder.c) audio thread id=65541
[New Thread 81926 (LWP 6960)]
(decoder.c) video thread id=81926
[tcdecode] exit code (0)
(decoder.c) video data read failed - end of stream
  
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 81926 (LWP 6960)]
0x400093c2 in do_lookup_versioned () from /lib/ld-linux.so.2
(gdb) bt
#0  0x400093c2 in do_lookup_versioned () from /lib/ld-linux.so.2
#1  0x40008563 in _dl_lookup_versioned_symbol_internal ()
   from /lib/ld-linux.so.2
#2  0x4000c33f in fixup () from /lib/ld-linux.so.2
#3  0x4000c4b0 in _dl_runtime_resolve () from /lib/ld-linux.so.2
#4  0x080595f1 in vimport_stop () at decoder.c:855
#5  0x08058dd3 in vimport_thread (vob=0x8607740) at decoder.c:537
#6  0x4003ea71 in pthread_start_thread () from /lib/i686/libpthread.so.0
#7  0x4003ec15 in pthread_start_thread_event () from /lib/i686/libpthread.so.0
#8  0x4016ac17 in clone () from /lib/i686/libc.so.6
(gdb)

--------------------   CUT HERE   -----------------------------------

Is that thread the one that is segfaulting?  What can I do to diagnose the
problem?  The same executables with the same input files work on RH9.

Thanks in advance,

Julio






More information about the fedora-test-list mailing list