After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 341281 - [id3demux] 'genre' is not valid UTF-8
[id3demux] 'genre' is not valid UTF-8
Status: RESOLVED DUPLICATE of bug 340979
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
0.10.5
Other Linux
: Normal normal
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2006-05-10 17:01 UTC by Sebastien Bacher
Modified: 2006-08-07 11:07 UTC
See Also:
GNOME target: ---
GNOME version: 2.13/2.14



Description Sebastien Bacher 2006-05-10 17:01:28 UTC
Another issue pointed by https://launchpad.net/distros/ubuntu/+source/rhythmbox/+bug/43755

"Starting program: /usr/bin/gst-launch-0.10 -t filesrc location=music.mp3 --gst-fatal-warnings \! decodebin \! fakesink
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread -1212807488 (LWP 7302)]
Setting pipeline to PAUSED ...

GStreamer-WARNING **: Trying to set string field 'genre' on structure, but string is not valid UTF-8. Please file a bug.
aborting...

Program received signal SIGABRT, Aborted.

Thread NaN (LWP 7302)

  • #0 __kernel_vsyscall
  • #1 raise
    from /lib/tls/i686/cmov/libc.so.6
  • #2 abort
    from /lib/tls/i686/cmov/libc.so.6
  • #3 IA__g_logv
    at gmessages.c line 497
  • #4 IA__g_log
    at gmessages.c line 517
  • #5 gst_structure_id_set_value
    at gststructure.c line 399
  • #6 gst_tag_list_add_value_internal
    at gsttaglist.c line 506
  • #7 gst_tag_list_add_valist
    at gsttaglist.c line 728
  • #8 gst_tag_list_add
    at gsttaglist.c line 661
  • #9 id3v2_tag_to_taglist
    at id3v2frames.c line 510
  • #10 id3demux_id3v2_parse_frame
    at id3v2frames.c line 634
  • #11 id3demux_read_id3v2_tag
    at id3tags.c line 440
  • #12 gst_id3demux_read_id3v2
    at gstid3demux.c line 769
  • #13 gst_id3demux_sink_activate
    at gstid3demux.c line 855
  • #14 gst_pad_set_active
    at gstpad.c line 642
  • #15 activate_pads
    at gstelement.c line 2254
  • #16 gst_iterator_fold
    at gstiterator.c line 503
  • #17 iterator_fold_with_resync
    at gstelement.c line 2272
  • #18 gst_element_pads_activate
    at gstelement.c line 2321
  • #19 gst_element_change_state_func
    at gstelement.c line 2358
  • #20 gst_id3demux_change_state
    at gstid3demux.c line 992
  • #21 gst_element_change_state
    at gstelement.c line 2177
  • #22 gst_element_set_state_func
    at gstelement.c line 2139
  • #23 gst_element_set_state
    at gstelement.c line 2049
  • #24 close_pad_link
    at gstdecodebin.c line 820
  • #25 type_found
    at gstdecodebin.c line 1295
  • #26 gst_marshal_VOID__UINT_BOXED
    at gstmarshal.c line 507
  • #27 IA__g_closure_invoke
    at gclosure.c line 490
  • #28 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #29 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #30 IA__g_signal_emit
    at gsignal.c line 2241
  • #31 gst_type_find_element_activate
    at gsttypefindelement.c line 735
  • #32 gst_pad_set_active
    at gstpad.c line 642
  • #33 activate_pads
    at gstelement.c line 2254
  • #34 gst_iterator_fold
    at gstiterator.c line 503
  • #35 iterator_fold_with_resync
    at gstelement.c line 2272
  • #36 gst_element_pads_activate
    at gstelement.c line 2321
  • #37 gst_element_change_state_func
    at gstelement.c line 2358
  • #38 gst_type_find_element_change_state
    at gsttypefindelement.c line 762
  • #39 gst_element_change_state
    at gstelement.c line 2177
  • #40 gst_element_set_state_func
    at gstelement.c line 2139
  • #41 gst_element_set_state
    at gstelement.c line 2049
  • #42 gst_bin_change_state_func
    at gstbin.c line 1753
  • #43 gst_decode_bin_change_state
    at gstdecodebin.c line 1420
  • #44 gst_element_change_state
    at gstelement.c line 2177
  • #45 gst_element_set_state_func
    at gstelement.c line 2139
  • #46 gst_element_set_state
    at gstelement.c line 2049
  • #47 gst_bin_change_state_func
    at gstbin.c line 1753

Comment 1 Sebastien Bacher 2006-05-10 17:03:24 UTC
Example: http://pkg-gnome.alioth.debian.org/bugzilla/341281.mp3
Comment 2 Tim-Philipp Müller 2006-05-10 17:15:25 UTC
This bug is caused by the same issue as bug #340979 - the first and last byte (character) of the string were inadvertantly stripped off. In this case this first byte is probably 'half' a UTF-8 character, so that leaves the string to be invalid. Should have been fixed by this commit as well:

  2006-05-10  Jan Schmidt  <thaytan@mad.scientist.com>

        * gst/id3demux/id3v2frames.c: (id3v2_genre_fields_to_taglist):
          Fix parsing of numeric genre strings some more, by ensuring that
          we only try and parse strings that a) Start with '(' and b) Consist
          only of digits.
          Also, when finding an escaping '((' sequence, bust it back to '(' by
          swallowing the first parenthesis

(the content is probably not exactly what's expected, but that's the way it was encoded)

*** This bug has been marked as a duplicate of 340979 ***
Comment 3 Sebastien Bacher 2006-05-10 19:24:57 UTC
the fix works fine, I've backported it to the Ubuntu package