Bug 517642

Summary: rhythmbox crashes when started with connected ipod (assertion failed: g_utf8_validate )
Product: [Fedora] Fedora Reporter: Ales Zelinka <azelinka>
Component: libgpodAssignee: Bastien Nocera <bnocera>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: rawhideCC: bnocera, mclasen, sawrub, tmz
Target Milestone: ---Keywords: Reopened
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: 0.7.0-4.fc11 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-10-20 15:43:04 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 473303    
Attachments:
Description Flags
log from terminal
none
log captured with libgpod-0.7.2-4.fc12.x86_64 installed none

Description Ales Zelinka 2009-08-15 14:24:44 UTC
Description of problem:
rhythmbox crashes when started with connected ipod.

Complete log is attached, last mesage on screen is this:
RhythmDB:ERROR:rhythmdb.c:3445:rhythmdb_entry_set_internal: assertion failed: (g_utf8_validate (g_value_get_string (value), -1, NULL))

Version-Release number of selected component (if applicable):
rhythmbox-0.12.3-2.fc12.x86_64

How reproducible:
always

Steps to Reproduce:
1. connect ipod, make rhythmbox see it (i.e. open nautilus)
2. run rhythmbox

Comment 1 Ales Zelinka 2009-08-15 14:28:13 UTC
Created attachment 357542 [details]
log from terminal

Comment 2 Bastien Nocera 2009-09-03 09:34:22 UTC
Could we please get a stacktrace?

Comment 3 Matthias Clasen 2009-09-24 13:28:00 UTC
ping. we really need a stacktrace here.

Comment 4 Ales Zelinka 2009-09-24 14:22:33 UTC
Ow, sorry for the delay, I've overlooked the first request. Here it is.

Program terminated with signal 6, Aborted.
#0  0x00007f17a267f575 in raise (sig=<value optimized out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64	  return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);

Thread 1 (Thread 21314):
#0  0x00007f17a267f575 in raise (sig=<value optimized out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
        pid = <value optimized out>
        selftid = <value optimized out>
#1  0x00007f17a2680d55 in abort () at abort.c:92
        act = {__sigaction_handler = {sa_handler = 0x7f17a29c6d78 <stderr>, 
            sa_sigaction = 0x7f17a29c6d78 <stderr>}, sa_mask = {__val = {2048, 
              1024, 2048, 51646752, 139739491698897, 139739485514488, 
              139739569023384, 51691024, 4294967295, 1, 5, 3032328, 0, 
              140735750645040, 25079888, 139739491340288}}, 
          sa_flags = -1488931215, sa_restorer = 0x7f1700000005}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007f17a2c3fd0f in IA__g_assertion_message (
    domain=<value optimized out>, file=0x7f17a71b6215 "rhythmdb.c", 
    line=<value optimized out>, 
    func=0x7f17a71b5bc0 "rhythmdb_entry_set_internal", 
    message=0x314bd20 "assertion failed: (g_utf8_validate (g_value_get_string (value), -1, NULL))") at gtestutils.c:1301
        lstr = "3449\000\177\000\000\b\225\276\242\027\177\000\000\002\000\000\000\000\000\000\000\310s\033\247\027\177\000"
#3  0x00007f17a2c402b0 in IA__g_assertion_message_expr (
    domain=0x7f17a71c4f9c "RhythmDB", file=0x7f17a71b6215 "rhythmdb.c", 
    line=3449, func=0x7f17a71b5bc0 "rhythmdb_entry_set_internal", 
    expr=<value optimized out>) at gtestutils.c:1312
No locals.
#4  0x00007f17a71532d9 in rhythmdb_entry_set_internal (db=0x187a100, 
    entry=0x314b900, notify_if_inserted=<value optimized out>, propid=2, 
    value=0x7fff986ca650) at rhythmdb.c:3449
        klass = <value optimized out>
        handled = <value optimized out>
        old_value = {g_type = 64, data = {{v_int = 51690752, 
              v_uint = 51690752, v_long = 51690752, v_ulong = 51690752, 
              v_int64 = 51690752, v_uint64 = 51690752, 
              v_float = 4.37102523e-37, v_double = 2.5538624770899706e-316, 
              v_pointer = 0x314bd00}, {v_int = 0, v_uint = 0, v_long = 0, 
              v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, 
              v_double = 0, v_pointer = 0x0}}}
        nop = <value optimized out>
        __PRETTY_FUNCTION__ = "rhythmdb_entry_set_internal"
#5  0x00007f17855cc021 in entry_set_string_prop (db=0x187a100, 
    entry=0x314b900, propid=RHYTHMDB_PROP_TITLE, 
    str=0x29fd6c0 "\357\277\276")
    at rb-ipod-source.c:311
        value = {g_type = 64, data = {{v_int = 44029632, v_uint = 44029632, 
              v_long = 44029632, v_ulong = 44029632, v_int64 = 44029632, 
              v_uint64 = 44029632, v_float = 2.34862107e-37, 
              v_double = 2.1753528570232416e-316, v_pointer = 0x29fd6c0}, {
              v_int = 134217728, v_uint = 134217728, v_long = 134217728, 
              v_ulong = 134217728, v_int64 = 134217728, v_uint64 = 134217728, 
              v_float = 3.85185989e-34, v_double = 6.631236846766476e-316, 
              v_pointer = 0x8000000}}}
#6  0x00007f17855cc208 in add_ipod_song_to_db (source=0x23401c0, db=0x187a100, 
    song=0x29fd390) at rb-ipod-source.c:667
        entry = 0x314b900
        entry_type = 0x211f750
        priv = 0x2340340
        pc_path = 0x29fd6c0 "\357\277\276"
        mount_path = <value optimized out>
        __FUNCTION__ = "add_ipod_song_to_db"
#7  0x00007f17855cd35f in load_ipod_db_idle_cb (source=0x23401c0)
    at rb-ipod-source.c:911
        db = 0x187a100
        it = 0x2b2c8e0
        priv = <value optimized out>
        __PRETTY_FUNCTION__ = "load_ipod_db_idle_cb"
#8  0x00007f17a2c1a2ae in g_main_dispatch (context=<value optimized out>)
    at gmain.c:1960
        dispatch = 0x7f17a2c18470 <g_idle_dispatch>
        user_data = 0x23401c0
        callback = 0x7f17855cd2f0 <load_ipod_db_idle_cb>
        cb_funcs = 0x7f17a2ec5a70
        cb_data = 0x24f0a90
        current_source_link = {data = 0x2bfd750, next = 0x0}
        source = 0x2bfd750
        current = 0x17ca910
        i = 11
#9  IA__g_main_context_dispatch (context=<value optimized out>) at gmain.c:2513
No locals.
#10 0x00007f17a2c1dc98 in g_main_context_iterate (context=0x173ced0, 
    block=<value optimized out>, dispatch=<value optimized out>, 
    self=<value optimized out>) at gmain.c:2591
        max_priority = 200
        timeout = 0
        some_ready = 1
        nfds = 14
        allocated_nfds = -1564301600
        fds = <value optimized out>
        __PRETTY_FUNCTION__ = "g_main_context_iterate"
#11 0x00007f17a2c1e0e5 in IA__g_main_loop_run (loop=0x247b0c0) at gmain.c:2799
        self = 0x15d4060
        __PRETTY_FUNCTION__ = "IA__g_main_loop_run"
#12 0x00007f17a6319bb7 in gtk_main () from /usr/lib64/libgtk-x11-2.0.so.0
No symbol table info available.
#13 0x0000000000403a85 in main (argc=1, argv=0x7fff986cabc8) at main.c:332
        _save = 0x1a033b0
        session_bus = <value optimized out>
        error = 0x0
        rb_shell = 0x176d2a0
        activated = <value optimized out>
        accel_map_file = 0x15da640 "/home/zelial/.gnome2/accels/rhythmbox"
        desktop_file_path = <value optimized out>
        context = <value optimized out>
        options = {{long_name = 0x405445 "debug", short_name = 100 'd', 
            flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x607750, 
            description = 0x40544b "Enable debug output", 
            arg_description = 0x0}, {long_name = 0x40545f "debug-match", 
            short_name = 68 'D', flags = 0, arg = G_OPTION_ARG_STRING, 
            arg_data = 0x607758, 
            description = 0x405628 "Enable debug output matching a specified string", arg_description = 0x0}, {long_name = 0x40546b "no-update", 
            short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, 
            arg_data = 0x60777c, 
            description = 0x405658 "Do not update the library with file changes", arg_description = 0x0}, {long_name = 0x405475 "no-registration", 
            short_name = 110 'n', flags = 0, arg = G_OPTION_ARG_NONE, 
            arg_data = 0x607760, 
            description = 0x405485 "Do not register the shell", 
            arg_description = 0x0}, {long_name = 0x40549f "dry-run", 
            short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, 
            arg_data = 0x607778, 
            description = 0x405688 "Don't save any data permanently (implies --no-registration)", arg_description = 0x0}, {
            long_name = 0x4054a7 "rhythmdb-file", short_name = 0 '\000', 
            flags = 0, arg = G_OPTION_ARG_STRING, arg_data = 0x607770, 
            description = 0x4054b5 "Path for database file to use", 
            arg_description = 0x0}, {long_name = 0x4054d3 "playlists-file", 
            short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_STRING, 
            arg_data = 0x607768, 
            description = 0x4056c8 "Path for playlists file to use", 
            arg_description = 0x0}, {long_name = 0x405334 "quit", 
            short_name = 113 'q', flags = 0, arg = G_OPTION_ARG_NONE, 
            arg_data = 0x607764, description = 0x4054e2 "Quit Rhythmbox", 
            arg_description = 0x0}, {long_name = 0x40524e "", 
            short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_STRING_ARRAY, 
            arg_data = 0x607780, description = 0x0, 
            arg_description = 0x4054f1 "[URI...]"}, {long_name = 0x0, 
            short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, 
            arg_data = 0x0, description = 0x0, arg_description = 0x0}}
        __FUNCTION__ = "main"

Comment 5 Bastien Nocera 2009-09-25 09:45:41 UTC
The iTunesDB contains non-UTF-8 data that libgpod will pass to Rhythmbox (which rightfully asserts, libgpod is supposed to only pass UTF-8 data).

Could you please make your iTunesDB file available? You can make it available internally as well, if you don't want to share it.

Comment 7 Bastien Nocera 2009-10-16 17:42:24 UTC
This is a bug in libgpod using g_utf16_to_utf8() without doing any validation on a string with a BOM.

Christophe Fergeau is looking into it, IIRC.

Comment 8 Bastien Nocera 2009-10-17 15:06:06 UTC
Could you please test the packages at:
http://koji.fedoraproject.org/koji/buildinfo?buildID=137008

And see if it fixes the crasher?

Comment 9 Ales Zelinka 2009-10-19 07:28:55 UTC
It is fixed, thanks. I can start rhythmbox with ipod plugged in.

Comment 10 Bastien Nocera 2009-10-19 12:12:40 UTC
Fixed in F-12, with tag requested.
http://koji.fedoraproject.org/koji/buildinfo?buildID=137246

rawhide done as well, F-11 will be in the updates-testing shortly.

Comment 11 Fedora Update System 2009-10-19 12:19:00 UTC
libgpod-0.7.0-3.fc11 has been submitted as an update for Fedora 11.
http://admin.fedoraproject.org/updates/libgpod-0.7.0-3.fc11

Comment 12 Bastien Nocera 2009-10-19 13:13:00 UTC
The patch makes it not crash, but it doesn't load properly any more.

Please attach the output of "rhythmbox -D ipod" and make sure the iPod plugin is enabled.

Comment 13 Ales Zelinka 2009-10-19 13:22:11 UTC
$ rhythmbox -D ipod
(15:20:04) [0x1cd4060] [register_rb_plugin] rb-ipod-plugin.c:102: Registering plugin RBIpodPlugin
(15:20:04) [0x1cd4060] [rb_ipod_plugin_init] rb-ipod-plugin.c:144: RBIpodPlugin initialising
(rhythmbox:12863): Rhythmbox-DEBUG: Received SaveYourself(SmSaveLocal, !Shutdown, SmInteractStyleNone, !Fast) in state idle
(rhythmbox:12863): Rhythmbox-DEBUG: Setting initial properties
(rhythmbox:12863): Rhythmbox-DEBUG: Sending SaveYourselfDone(True) for initial SaveYourself
(rhythmbox:12863): Rhythmbox-DEBUG: Received SaveComplete message in state save-yourself-done
<--- Here I right-clicked the ipod device in RB and selected "properties". 2x
(15:20:16) [0x1cd4060] [rb_ipod_source_show_properties] rb-ipod-source.c:1637: can't show ipod properties with no ipod db
(15:20:27) [0x1cd4060] [rb_ipod_source_show_properties] rb-ipod-source.c:1637: can't show ipod properties with no ipod db
<--- quiting RB
(15:20:46) [0x1cd4060] [rb_ipod_plugin_finalize] rb-ipod-plugin.c:152: RBIpodPlugin finalising

Comment 14 Bastien Nocera 2009-10-19 13:45:57 UTC
Please test with this version installed:
http://koji.fedoraproject.org/koji/buildinfo?buildID=137266

And make sure the iPod plugin is enabled.

Comment 15 Ales Zelinka 2009-10-19 14:41:35 UTC
Created attachment 365242 [details]
log captured with libgpod-0.7.2-4.fc12.x86_64 installed

Comment 16 Bastien Nocera 2009-10-19 16:16:47 UTC
The patch wasn't applied properly. This build fixes that:
http://koji.fedoraproject.org/koji/buildinfo?buildID=137295

Works in my local tests on your iPod database.

Comment 17 Ales Zelinka 2009-10-19 16:29:45 UTC
And works with my RB too! No crashes and instantaneous library and playlists import. Thanks.

Comment 18 Bastien Nocera 2009-10-20 15:43:04 UTC
Fixed in rawhide, should get into F11 shortly:
http://admin.fedoraproject.org/updates/libgpod-0.7.0-4.fc11

Comment 19 Fedora Update System 2009-11-13 02:29:52 UTC
libgpod-0.7.0-4.fc11 has been pushed to the Fedora 11 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 20 sawrub 2010-09-25 02:38:36 UTC
when is it coming to F12.I'm facing the issue in F12 too..