GNOME Bugzilla – Bug 158018
gstreamer typefind stalls on these JPEG files
Last modified: 2005-02-08 08:25:11 UTC
gstreamer stalls with maximum CPU usage when I run typefind on these JPEG files: $ gst-launch-0.8 --gst-debug-level=1 gnomevfssrc location=public_html/breaks-rb/cover.jpg ! typefind RUNNING pipeline ... This is a problem because I have cover images in my music folders; rhythmbox runs gst typefind over them when importing, and stalls. Breaks: http://catmur.ath.cx/~ed/breaks-rb/cover.jpg OK: http://catmur.ath.cx/~ed/breaks-rb/ok.jpg More that break: http://catmur.ath.cx/~ed/breaks-rb/
They all load OK in ImageMagick, eog, nautilus, etc. The OK image gives: $ gst-launch-0.8 --gst-debug-level=1 gnomevfssrc location=public_html/breaks-rb/ok.jpg ! typefind RUNNING pipeline ... Execution ended after 5 iterations (sum 4380000 ns, average 876000 ns, min 25000 ns, max 4083000 ns). If I run it on a broken image with gst-debug=typefind:5 and hit Ctrl+C I get: $ gst-launch-0.8 --gst-debug=typefind:5 gnomevfssrc location=public_html/breaks-rb/cover.jpg ! typefind RUNNING pipeline ... DEBUG (0x8050960 - 305618:45:30.459089000) typefind(20799) gsttypefindelement.c(329):start_typefinding:<typefindelement0> starting typefinding INFO (0x8050960 - 305618:45:30.460358000) typefind(20799) gsttypefindelement.c(599):gst_type_find_element_chain:<typefindelement0> starting with 71 typefinding functions INFO (0x8050960 - 305618:45:30.460762000) typefind(20799) gsttypefindelement.c(618):gst_type_find_element_chain:<typefindelement0> iterating 71 typefinding functions LOG (0x8050960 - 305618:45:30.463954000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'video/x-msvideo' called peek (0, 12) DEBUG (0x8050960 - 305618:45:30.464252000) typefind(20799) gsttypefindelement.c(631):gst_type_find_element_chain:<typefindelement0> 'video/x-msvideo' was removed - no chance of being the right plugin LOG (0x8050960 - 305618:45:30.464455000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'video/x-cdxa' called peek (0, 12) DEBUG (0x8050960 - 305618:45:30.464558000) typefind(20799) gsttypefindelement.c(631):gst_type_find_element_chain:<typefindelement0> 'video/x-cdxa' was removed - no chance of being the right plugin LOG (0x8050960 - 305618:45:30.464695000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/x-flac' called peek (0, 4) DEBUG (0x8050960 - 305618:45:30.464795000) typefind(20799) gsttypefindelement.c(631):gst_type_find_element_chain:<typefindelement0> 'audio/x-flac' was removed - no chance of being the right plugin LOG (0x8050960 - 305618:45:30.464905000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'application/x-id3' called peek (0, 10)LOG (0x8050960 - 305618:45:30.465004000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'application/x-id3' called peek (-128, 3) DEBUG (0x8050960 - 305618:45:30.465110000) typefind(20799) gsttypefindelement.c(425):find_element_get_length:<typefindelement0> 'application/x-id3' called get_length () and it's 3802 bytes DEBUG (0x8050960 - 305618:45:30.465213000) typefind(20799) gsttypefindelement.c(631):gst_type_find_element_chain:<typefindelement0> 'application/x-id3' was removed - no chance of being the right plugin LOG (0x8050960 - 305618:45:30.465329000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/x-ttafile' called peek (0, 3) DEBUG (0x8050960 - 305618:45:30.465427000) typefind(20799) gsttypefindelement.c(631):gst_type_find_element_chain:<typefindelement0> 'audio/x-ttafile' was removed - no chance of being the right plugin LOG (0x8050960 - 305618:45:30.465526000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (0, 2048) LOG (0x8050960 - 305618:45:30.465701000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (2048, 2048) LOG (0x8050960 - 305618:45:30.465830000) typefind(20799) gsttypefindelement.c(528):find_peek:<typefindelement0> setting requested peek (2048, 2048) on 'audio/mpeg' LOG (0x8050960 - 305618:45:30.465927000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (2048, 1024) LOG (0x8050960 - 305618:45:30.466032000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3072, 2048) LOG (0x8050960 - 305618:45:30.466132000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3072, 1024) LOG (0x8050960 - 305618:45:30.466247000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3072, 512) LOG (0x8050960 - 305618:45:30.466350000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3583, 4) LOG (0x8050960 - 305618:45:30.466448000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3584, 2048) LOG (0x8050960 - 305618:45:30.466608000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3584, 1024) LOG (0x8050960 - 305618:45:30.466709000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3584, 512) LOG (0x8050960 - 305618:45:30.466809000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3584, 256) LOG (0x8050960 - 305618:45:30.466906000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3584, 128) LOG (0x8050960 - 305618:45:30.467004000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3712, 2048) LOG (0x8050960 - 305618:45:30.467103000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3712, 1024) LOG (0x8050960 - 305618:45:30.467202000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3712, 512) LOG (0x8050960 - 305618:45:30.467315000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3712, 256) LOG (0x8050960 - 305618:45:30.467413000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3712, 128) LOG (0x8050960 - 305618:45:30.467511000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3712, 64) LOG (0x8050960 - 305618:45:30.467620000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3776, 2048) LOG (0x8050960 - 305618:45:30.467721000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3776, 1024) LOG (0x8050960 - 305618:45:30.467820000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3776, 512) LOG (0x8050960 - 305618:45:30.467919000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3776, 256) LOG (0x8050960 - 305618:45:30.468017000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3776, 128) LOG (0x8050960 - 305618:45:30.468114000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3776, 64) LOG (0x8050960 - 305618:45:30.468226000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3776, 32) LOG (0x8050960 - 305618:45:30.468323000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3776, 16) LOG (0x8050960 - 305618:45:30.468420000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3792, 2048) LOG (0x8050960 - 305618:45:30.468519000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3792, 1024) LOG (0x8050960 - 305618:45:30.468637000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3792, 512) LOG (0x8050960 - 305618:45:30.468735000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3792, 256) LOG (0x8050960 - 305618:45:30.468834000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3792, 128) LOG (0x8050960 - 305618:45:30.468931000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3792, 64) LOG (0x8050960 - 305618:45:30.469029000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3792, 32) LOG (0x8050960 - 305618:45:30.469127000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3792, 16) LOG (0x8050960 - 305618:45:30.469240000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3792, 8) LOG (0x8050960 - 305618:45:30.469337000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3800, 2048) LOG (0x8050960 - 305618:45:30.469437000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3800, 1024) LOG (0x8050960 - 305618:45:30.469535000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3800, 512) LOG (0x8050960 - 305618:45:30.469646000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3800, 256) LOG (0x8050960 - 305618:45:30.469744000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3800, 128) LOG (0x8050960 - 305618:45:30.469841000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3800, 64) LOG (0x8050960 - 305618:45:30.469939000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3800, 32) LOG (0x8050960 - 305618:45:30.470037000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3800, 16) LOG (0x8050960 - 305618:45:30.470149000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/mpeg' called peek (3800, 8) LOG (0x8050960 - 305618:45:30.470252000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'video/mpeg1' called peek (0, 2048) LOG (0x8050960 - 305618:45:30.470370000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'video/mpeg1' called peek (2045, 2048) LOG (0x8050960 - 305618:45:30.470471000) typefind(20799) gsttypefindelement.c(528):find_peek:<typefindelement0> setting requested peek (2045, 2048) on 'video/mpeg1' LOG (0x8050960 - 305618:45:30.470573000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'application/ogg' called peek (0, 4) DEBUG (0x8050960 - 305618:45:30.470683000) typefind(20799) gsttypefindelement.c(631):gst_type_find_element_chain:<typefindelement0> 'application/ogg' was removed - no chance of being the right plugin LOG (0x8050960 - 305618:45:30.470782000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'audio/x-wav' called peek (0, 12) DEBUG (0x8050960 - 305618:45:30.470881000) typefind(20799) gsttypefindelement.c(631):gst_type_find_element_chain:<typefindelement0> 'audio/x-wav' was removed - no chance of being the right plugin LOG (0x8050960 - 305618:45:30.470980000) typefind(20799) gsttypefindelement.c(505):find_peek:<typefindelement0> 'image/jpeg' called peek (0, 10) LOG (0x8050960 - 305618:45:30.471086000) typefind(20799) gsttypefindelement.c(541):find_suggest:<typefindelement0> 'image/jpeg' called suggest (100, image/jpeg) INFO (0x8050960 - 305618:45:30.471257000) typefind(20799) gsttypefindelement.c(641):gst_type_find_element_chain:<typefindelement0> 'image/jpeg' returned 100/100 probability, using it NOW INFO (0x8050960 - 305618:45:30.471396000) typefind(20799) gsttypefindelement.c(124):gst_type_find_element_have_type:<typefindelement0> found caps image/jpeg DEBUG (0x8050960 - 305618:45:30.471534000) typefind(20799) gsttypefindelement.c(346):stop_typefinding:<typefindelement0> stopping typefinding and pushing cached buffers DEBUG (0x8050960 - 305618:45:30.471681000) typefind(20799) gsttypefindelement.c(363):stop_typefinding:<typefindelement0> seeking back to current position 3802 Caught interrupt. Execution ended after 216454 iterations (sum 3891023000 ns, average 17976 ns, min 15000 ns, max 12218000 ns). DEBUG (0x8050960 - 305618:45:36.297988000) typefind(20799) gsttypefindelement.c(346):stop_typefinding:<typefindelement0> stopping typefinding I'm happy to supply any more info.
Oops. On the OK image I get: ... LOG (0x8050960 - 305618:50:47.312159000) typefind(20839) gsttypefindelement.c(505):find_peek:<typefindelement0> 'image/jpeg' called peek (0, 10) LOG (0x8050960 - 305618:50:47.312319000) typefind(20839) gsttypefindelement.c(541):find_suggest:<typefindelement0> 'image/jpeg' called suggest (100, image/jpeg) INFO (0x8050960 - 305618:50:47.312482000) typefind(20839) gsttypefindelement.c(641):gst_type_find_element_chain:<typefindelement0> 'image/jpeg' returned 100/100 probability, using it NOW INFO (0x8050960 - 305618:50:47.312624000) typefind(20839) gsttypefindelement.c(124):gst_type_find_element_have_type:<typefindelement0> found caps image/jpeg DEBUG (0x8050960 - 305618:50:47.312766000) typefind(20839) gsttypefindelement.c(346):stop_typefinding:<typefindelement0> stopping typefinding and pushing cached buffers DEBUG (0x8050960 - 305618:50:47.342362000) typefind(20839) gsttypefindelement.c(363):stop_typefinding:<typefindelement0> seeking back to current position 4096 DEBUG (0x8050960 - 305618:50:47.342855000) typefind(20839) gsttypefindelement.c(388):push_buffer_store:<typefindelement0> pushing cached data (4096 bytes) Execution ended after 5 iterations (sum 39118000 ns, average 7823600 ns, min 27000 ns, max 38435000 ns). DEBUG (0x8050960 - 305618:50:47.343931000) typefind(20839) gsttypefindelement.c(346):stop_typefinding:<typefindelement0> stopping typefinding
Hmm. Perhaps http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/elements/gsttypefindelement.c?rev=1.22&view=log#rev1.21 is the fix. Testing now.
Yep, that fixes it. That'll be in the 0.8.8 release, yes? Closing FIXED.
*** Bug 158017 has been marked as a duplicate of this bug. ***
*** Bug 158978 has been marked as a duplicate of this bug. ***
*** Bug 156568 has been marked as a duplicate of this bug. ***
*** Bug 158077 has been marked as a duplicate of this bug. ***
*** Bug 159196 has been marked as a duplicate of this bug. ***
*** Bug 156891 has been marked as a duplicate of this bug. ***
*** Bug 160910 has been marked as a duplicate of this bug. ***
*** Bug 161418 has been marked as a duplicate of this bug. ***
*** Bug 163211 has been marked as a duplicate of this bug. ***
*** Bug 163512 has been marked as a duplicate of this bug. ***
*** Bug 163722 has been marked as a duplicate of this bug. ***
*** Bug 163880 has been marked as a duplicate of this bug. ***
*** Bug 164967 has been marked as a duplicate of this bug. ***
*** Bug 165336 has been marked as a duplicate of this bug. ***
*** Bug 166629 has been marked as a duplicate of this bug. ***