ChinnaSuhas / ossbuild

Automatically exported from code.google.com/p/ossbuild
Other
0 stars 1 forks source link

ORC segfault #52

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
After the last update, in which liboil has been replaced by liborc, orc 
segfaults with the following backtrace:

(gdb) run videotestsrc ! theoraenc ! fakesink
Starting program: c:\gstreamer\bin/gst-launch.exe videotestsrc ! theoraenc ! 
fakesink
[New Thread 2424.0xaec]
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
[New Thread 2424.0xb0]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 2424.0xb0]
0x7787fc77 in ntdll!memchr () from C:\Windows\system32\ntdll.dll
(gdb) warning: FTH: (2424): *** Fault tolerant heap shim applied to current 
process. This is usually due to previous crashes. ***

(gdb) bt
#0  0x7787fc77 in ntdll!memchr () from C:\Windows\system32\ntdll.dll
#1  0x7787fb86 in ntdll!memchr () from C:\Windows\system32\ntdll.dll
#2  0x6568d4d9 in orc_once_mutex_lock ()
   from c:\gstreamer\bin\liborc-0.4-0.dll
#3  0x003a2808 in ?? ()
   from C:\gstreamer\lib\gstreamer-0.10\libgstvideotestsrc.dll
(gdb) 

Original issue reported on code.google.com by ylatuya on 5 Jul 2010 at 10:18

GoogleCodeExporter commented 9 years ago
A more detailed backtrace with all the threads:
$ gdb  gst-launch.exe 
GNU gdb (GDB) 7.1
Copyright (C) 2010 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 "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from c:\gstreamer\bin/gst-launch.exe...(no debugging symbols 
found)...done.
(gdb) run videotestsrc ! theoraenc ! fakesink
Starting program: c:\gstreamer\bin/gst-launch.exe videotestsrc ! theoraenc ! 
fakesink
[New Thread 3788.0x8ec]
Setting pipeline to PAUSED ..
Pipeline is PREROLLING ...
[New Thread 3788.0xcb8]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 3788.0xcb8]
0x7787fc77 in ntdll!memchr () from C:\Windows\system32\ntdll.dll
(gdb) warning: FTH: (3788): *** Fault tolerant heap shim applied to current 
process. This is usually due to previous crashes. ***

(gdb) thread apply all bt

Thread 2 (Thread 3788.0xcb8):
#0  0x7787fc77 in ntdll!memchr () from C:\Windows\system32\ntdll.dll
#1  0x7787fb86 in ntdll!memchr () from C:\Windows\system32\ntdll.dll
#2  0x6568d4d9 in orc_once_mutex_lock ()
   from c:\gstreamer\bin\liborc-0.4-0.dll
#3  0x002b2808 in ?? ()
   from C:\gstreamer\lib\gstreamer-0.10\libgstvideotestsrc.dll

Thread 1 (Thread 3788.0x8ec):
#0  0x77896bb1 in ntdll!RtlLockHeap () from C:\Windows\system32\ntdll.dll
#1  0x65c41bf4 in g_mutex_unlock_win32_cs_impl ()
   from c:\gstreamer\bin\libgthread-2.0-0.dll
#2  0x685ea72c in g_main_context_prepare ()
   from c:\gstreamer\bin\libglib-2.0-0.dll
#3  0x685eb1e7 in g_main_context_iterate ()
   from c:\gstreamer\bin\libglib-2.0-0.dll
#4  0x685ebcc1 in g_main_loop_run () from c:\gstreamer\bin\libglib-2.0-0.dll
#5  0x1000e2ce in libgstreamer-0!gst_bus_poll ()
   from c:\gstreamer\bin\libgstreamer-0.10.dll
#6  0x015b90e8 in ?? ()
#7  0x00402b9b in ?? ()
#8  0x75f61174 in KERNEL32!AcquireSRWLockExclusive ()
   from C:\Windows\system32\kernel32.dll
#9  0x778ab495 in ntdll!RtlInsertElementGenericTableAvl ()
   from C:\Windows\system32\ntdll.dll
#10 0x778ab468 in ntdll!RtlInsertElementGenericTableAvl ()
   from C:\Windows\system32\ntdll.dll
#11 0x00000000 in ?? ()
(gdb)

Original comment by ylatuya on 5 Jul 2010 at 10:21

GoogleCodeExporter commented 9 years ago
And another one, just in case:
(gdb) thread apply all bt

Thread 2 (Thread 2736.0xad0):
#0  0x77c3fc77 in ntdll!memchr () from C:\Windows\system32\ntdll.dll
#1  0x77c3fb86 in ntdll!memchr () from C:\Windows\system32\ntdll.dll
#2  0x6568d4d9 in orc_once_mutex_lock ()
   from c:\gstreamer\bin\liborc-0.4-0.dll
#3  0x003f2808 in ?? ()
   from C:\gstreamer\lib\gstreamer-0.10\libgstvideotestsrc.dll

Thread 1 (Thread 2736.0x808):
#0  0x68610010 in g_static_rec_mutex_unlock ()
   from c:\gstreamer\bin\libglib-2.0-0.dll
#1  0x1001c2fa in libgstreamer-0!gst_element_set_state ()
   from c:\gstreamer\bin\libgstreamer-0.10.dll
#2  0x00000013 in ?? ()
#3  0x00000000 in ?? ()

Original comment by ylatuya on 5 Jul 2010 at 10:32

GoogleCodeExporter commented 9 years ago
I assume we are compiling it with win32 threads, we should try with pthreads 
instead. The relevant code of orc_once_mutex_lock can be found here:
http://code.entropywave.com/git?p=orc.git;a=blob;f=orc/orconce.c;h=91c585abc25fc
755588ef75a539eddb3b0be2121;hb=HEAD

Original comment by ylatuya on 5 Jul 2010 at 10:44

GoogleCodeExporter commented 9 years ago
Using pthreads instead of win32 threads works.

Original comment by ylatuya on 5 Jul 2010 at 11:17

GoogleCodeExporter commented 9 years ago
Could you try this patch?

Original comment by d...@entropywave.com on 9 Jul 2010 at 7:45

Attachments:

GoogleCodeExporter commented 9 years ago
Oops, wrong patch.

Original comment by d...@entropywave.com on 9 Jul 2010 at 8:04

Attachments:

GoogleCodeExporter commented 9 years ago
The crash continues to happen even with this provided patch. I recompiled using 
win32 threads and ran the provided example pipeline again which resulted in the 
same crash previously described.

Original comment by david.g.hoyt on 9 Jul 2010 at 8:37

GoogleCodeExporter commented 9 years ago
Here's the equivalent patch I used.

Original comment by david.g.hoyt on 9 Jul 2010 at 9:06

Attachments:

GoogleCodeExporter commented 9 years ago
Oops, the prototype should be BOOL WINAPI DllMain(...).  Fixed in Orc master, 
will be in 0.4.6.

Original comment by dschle...@gmail.com on 14 Jul 2010 at 12:45

GoogleCodeExporter commented 9 years ago
This is fixed in the trunk with an upgrade to orc 0.4.6.

However, there's still an issue using theoradec. Reverting to an old copy of 
libtheoradec resolved it for now. Presumably it's an issue with compiling 
theora against mingw-w64's gcc 4.5.0. (LTO? Loop unrolling? ??).

Original comment by david.g.hoyt on 15 Jul 2010 at 9:47