GNOME Bugzilla – Bug 766215
flacenc crashes, GST 1.8.1, Windows 32-bit
Last modified: 2016-05-20 06:00:04 UTC
flacenc on 32 bit Windows seems to crash whatever you do with it - Sebastian says: > I'm mostly testing things with the 64 bit build, and there flacenc > still works. But I can confirm that it crashes with the 32 bit build. > It crashes inside FLAC__lpc_compute_lp_coefficients() inside libFLAC- 8.dll btw. It might be a similar problem to https://bugzilla.gnome.org/show_bug.cgi?id=763663 Here is a log which I include inline as it's not that long: C:\Users\Andy>set GST_DEBUG=3,flacenc:6 C:\Users\Andy>C:\gstreamer\1.0\x86\bin\gst-launch-1.0 audiotestsrc ! flacenc ! filesink location=out.flac 0:00:00.091221349 3916 02594160 DEBUG flacenc gstflacenc.c:1277:gst_flac_enc_sink_query: Received caps query on sinkpad, caps query: 02593060, GstQueryCaps, filter=(GstCaps)"NULL", caps=(GstCaps)"NULL"; 0:00:00.121009514 3916 02594160 DEBUG flacenc gstflacenc.c:774:gst_flac_enc_getcaps:<flacenc0:sink> Return caps audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)1; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)2, channel-mask=(bitmask)0x0000000000000003; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)3, channel-mask=(bitmask)0x0000000000000007; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)4, channel-mask=(bitmask)0x0000000000000033; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)5, channel-mask=(bitmask)0x0000000000000037; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)6, channel-mask=(bitmask)0x000000000000003f; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)7, channel-mask=(bitmask)0x000000000000013f; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)8, channel-mask=(bitmask)0x0000000000000c3f 0:00:00.326842765 3916 02594160 DEBUG flacenc gstflacenc.c:1277:gst_flac_enc_sink_query: Received caps query on sinkpad, caps query: 025930F0, GstQueryCaps, filter=(GstCaps)"NULL", caps=(GstCaps)"NULL"; 0:00:00.351173350 3916 02594160 DEBUG flacenc gstflacenc.c:774:gst_flac_enc_getcaps:<flacenc0:sink> Return caps audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)1; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)2, channel-mask=(bitmask)0x0000000000000003; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)3, channel-mask=(bitmask)0x0000000000000007; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)4, channel-mask=(bitmask)0x0000000000000033; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)5, channel-mask=(bitmask)0x0000000000000037; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)6, channel-mask=(bitmask)0x000000000000003f; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)7, channel-mask=(bitmask)0x000000000000013f; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)8, channel-mask=(bitmask)0x0000000000000c3f Setting pipeline to PAUSED ... 0:00:00.565477131 3916 02594160 DEBUG flacenc gstflacenc.c:395:gst_flac_enc_start:<flacenc0> start Pipeline is PREROLLING ...0:00:00.5791270 53 3916 025584F0 FIXME default gstutils.c:3764:gst_pad_create_stream_id_internal:<audiotestsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id 0:00:00.608211048 3916 025584F0 DEBUG flacenc gstflacenc.c:1229:gst_flac_enc_sink_event: Received stream-start event on sinkpad, stream-start event: 018E6338, time 99:99:99.999999999, seq-num 17, GstEventStreamStart, stream-id=(string)b130cbc73cde7e6dc2e25baf013a4c05, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)0; 0:00:00.651319066 3916 025584F0 DEBUG flacenc gstflacenc.c:1277:gst_flac_enc_sink_query: Received caps query on sinkpad, caps query: 02593390, GstQueryCaps, filter=(GstCaps)"audio/x-raw\,\ format\=\(string\)\{\ S16LE\,\ S16BE\,\ U16LE\,\ U16BE\,\ S24_32LE\,\ S24_32BE\,\ U24_32LE\,\ U24_32BE\,\ S32LE\,\ S32BE\,\ U32LE\,\ U32BE\,\ S24LE\,\ S24BE\,\ U24LE\,\ U24BE\,\ S20LE\,\ S20BE\,\ U20LE\,\ U20BE\,\ S18LE\,\ S18BE\,\ U18LE\,\ U18BE\,\ F32LE\,\ F32BE\,\ F64LE\,\ F64BE\,\ S8\,\ U8\ \}\,\ layout\=\(string\)interleaved\,\ rate\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ channels\=\(int\)\[\ 1\,\ 2147483647\ \]", caps=(GstCaps)"NULL"; 0:00:00.734725245 3916 025584F0 DEBUG flacenc gstflacenc.c:774:gst_flac_enc_getcaps:<flacenc0:sink> Return caps audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)1; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)2, channel-mask=(bitmask)0x0000000000000003; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)3, channel-mask=(bitmask)0x0000000000000007; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)4, channel-mask=(bitmask)0x0000000000000033; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)5, channel-mask=(bitmask)0x0000000000000037; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)6, channel-mask=(bitmask)0x000000000000003f; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)7, channel-mask=(bitmask)0x000000000000013f; audio/x-raw, format=(string){ S8, S16LE, S24LE, S24_32LE }, layout=(string)interleaved, rate=(int)[ 1, 655350 ], channels=(int)8, channel-mask=(bitmask)0x0000000000000c3f 0:00:00.907603440 3916 025584F0 DEBUG flacenc gstflacenc.c:1277:gst_flac_enc_sink_query: Received accept-caps query on sinkpad, accept-caps query: 025933F0, GstQueryAcceptCaps, caps=(GstCaps)"audio/x-raw\,\ rate\=\(int\)44100\,\ channels\=\(int\)1\,\ format\=\(string\)S8\,\ layout\=\(string\)interleaved", result=(boolean)false; 0:00:00.943318177 3916 025584F0 DEBUG flacenc gstflacenc.c:1229:gst_flac_enc_sink_event: Received caps event on sinkpad, caps event: 018E6380, time 99:99:99.999999999, seq-num 20, GstEventCaps, caps=(GstCaps)"audio/x-raw\,\ rate\=\(int\)44100\,\ channels\=\(int\)1\,\ format\=\(string\)S8\,\ layout\=\(string\)interleaved"; 0:00:00.977901393 3916 025584F0 DEBUG flacenc gstflacenc.c:1277:gst_flac_enc_sink_query: Received allocation query on sinkpad, allocation query: 02593420, GstQueryAllocation, caps=(GstCaps)"audio/x-raw\,\ rate\=\(int\)44100\,\ channels\=\(int\)1\,\ format\=\(string\)S8\,\ layout\=\(string\)interleaved", need-pool=(boolean)true; 0:00:01.013981698 3916 025584F0 DEBUG flacenc gstflacenc.c:1229:gst_flac_enc_sink_event: Received segment event on sinkpad, segment event: 018E6410, time 99:99:99.999999999, seq-num 13, GstEventSegment, segment=(GstSegment)"GstSegment, flags=(GstSegmentFlags)GST_SEGMENT_FLAG_NONE, rate=(double)1, applied-rate=(double)1, format=(GstFormat)GST_FORMAT_TIME, base=(guint64)0, offset=(guint64)0, start=(guint64)0, stop=(guint64)18446744073709551615, time=(guint64)0, position=(guint64)0, duration=(guint64)18446744073709551615;"; 0:00:01.072455180 3916 025584F0 DEBUG flacenc gstflacenc.c:1229:gst_flac_enc_sink_event: Received tag event on sinkpad, tag event: 018E63C8, time 99:99:99.999999999, seq-num 21, GstTagList-stream, taglist=(taglist)"taglist\,\ description\=\(string\)\"audiotest\\\ wave\"\;"; 0:00:01.100397073 3916 025584F0 DEBUG flacenc gstflacenc.c:789:gst_flac_enc_peer_query_total_samples:<flacenc0> querying peer for DEFAULT format duration 0:00:01.116122985 3916 025584F0 DEBUG flacenc gstflacenc.c:794:gst_flac_enc_peer_query_total_samples:<flacenc0> querying peer for TIME format duration 0:00:01.131003073 3916 025584F0 DEBUG flacenc gstflacenc.c:805:gst_flac_enc_peer_query_total_samples:<flacenc0> Upstream reported no total samples 0:00:01.145235993 3916 025584F0 WARN flacenc gstflacenc.c:695:gst_flac_enc_set_metadata:<flacenc0> total time unknown; can not add seekpoints 0:00:01.158852464 3916 025584F0 DEBUG flacenc gstflacenc.c:1143:gst_flac_enc_write_callback:<flacenc0> Got header, queueing (4 bytes) 0:00:01.171467122 3916 025584F0 DEBUG flacenc gstflacenc.c:1143:gst_flac_enc_write_callback:<flacenc0> Got header, queueing (38 bytes) 0:00:01.184511178 3916 025584F0 DEBUG flacenc gstflacenc.c:1143:gst_flac_enc_write_callback:<flacenc0> Got header, queueing (74 bytes) 0:00:01.198002039 3916 025584F0 LOG flacenc gstflacenc.c:1355:gst_flac_enc_handle_frame:<flacenc0> processing 1024 samples, 1 channels 0:00:01.211310969 3916 025584F0 LOG flacenc gstflacenc.c:1355:gst_flac_enc_handle_frame:<flacenc0> processing 1024 samples, 1 channels 0:00:01.224518523 3916 025584F0 LOG flacenc gstflacenc.c:1355:gst_flac_enc_handle_frame:<flacenc0> processing 1024 samples, 1 channels 0:00:01.237563262 3916 025584F0 LOG flacenc gstflacenc.c:1355:gst_flac_enc_handle_frame:<flacenc0> processing 1024 samples, 1 channels 0:00:01.250702891 3916 025584F0 LOG flacenc gstflacenc.c:1355:gst_flac_enc_handle_frame:<flacenc0> processing 1024 samples, 1 channels Visual Studio says: Unhandled exception at 0x6408FA72 (libFLAC-8.dll) in gst-launch-1.0.exe: 0xC0000005: Access violation reading location 0xFFFFFFFF. And the call stack: > libFLAC-8.dll!6408fa72() Unknown [Frames below may be incorrect and/or missing, no symbols loaded for libFLAC-8.dll] libFLAC-8.dll!640cee42() Unknown libFLAC-8.dll!640cfb12() Unknown libFLAC-8.dll!640d4128() Unknown libgstflac.dll!667044e2() Unknown libgstaudio-1.0-0.dll!64ba17c7() Unknown libgstaudio-1.0-0.dll!64ba283f() Unknown libgstreamer-1.0-0.dll!614841b1() Unknown libgstreamer-1.0-0.dll!61487bdd() Unknown libgstreamer-1.0-0.dll!614865e0() Unknown libgstreamer-1.0-0.dll!6147b757() Unknown libgstreamer-1.0-0.dll!614b9f3e() Unknown libglib-2.0-0.dll!68617338() Unknown libglib-2.0-0.dll!68616a8d() Unknown libglib-2.0-0.dll!68633aad() Unknown [External Code]
Created attachment 328236 [details] [review] Fix flacenc segfault by patching libFLAC in Cerbero I found a couple of patches upstream that fixed this issue for me. The bug isn't on our end; libFLAC is buggy when you combine SSE, 32-bit MinGW, and (perhaps) our ancient Cerbero toolchain.
commit 122578b315c49f8e3fdf6689e2583763b937a77f Author: Nirbheek Chauhan <nirbheek@centricular.com> Date: Fri May 20 03:50:19 2016 +0530 flac: Fix segfault on 32-bit Windows with flacenc Patches are taken from upstream. Found by inspecting upstream commit logs. https://bugzilla.gnome.org/show_bug.cgi?id=766215