Hi. In trying to debug why playlists were not being populated from my PMP on RB 0.12.6, I think I discovered why. It seems that for each entry in a playlist (for example): #UTF8: /Music/Wes Burden/Brave New World/Brave New World.mp3 /Music/Wes Burden/Brave New World/Brave New World.mp3 #UTF8: /Music/Kokoon/Save Me.mp3 /Music/Kokoon/Save Me.mp3 #UTF8: /Music/Wes Burden/Brave New World/Mirror.mp3 /Music/Wes Burden/Brave New World/Mirror.mp3 handle_playlist_entry_cb() is called with two parameters, the playlist to add to and the path from the playlist file ("/Music/Wes Burden/Brave New World/Brave New World.mp3") in the parameter "uri". Of course, this is not really a URI, it's the path portion from a URI. handle_playlist_entry_cb() goes on to believe this is a URI and calls rb_generic_player_source_uri_from_playlist_uri() with it. rb_generic_player_source_uri_from_playlist_uri() then hands this "URI" off to RB_GENERIC_PLAYER_SOURCE_GET_CLASS (source)->impl_uri_from_playlist_uri(), which is actually default_uri_from_playlist_uri() which also handles this "uri" argument as a URI and tries to build a full URI with it using: full_uri = rb_uri_append_uri (mount_uri, uri); This of course fails because rb_uri_append_uri(), which is given two arguments: a uri and a path, as such: rb_uri_append_uri (uri=0xa9bfd78 "file:///media/ARCHOS5", fragment=0xa613f28 "/Music/Wes Burden/Brave New World/Mirror.mp3") then tries to create a GFile * from the non-uri path argument (fragment) with: g_file_new_for_uri (fragment); But of course, fragment is not a URI, but a path and g_file_new_for_uri() fails, returning NULL. Am I now barking up the right tree or am I off-base? FWIW, the full stack trace leading to default_uri_from_playlist_uri() is: #0 default_uri_from_playlist_uri (source=0xa9e7178, uri=0xb954370 "/Music/Wes Burden/Brave New World/Brave New World.mp3") at rb-generic-player-source.c:663 #1 0x0905921b in rb_generic_player_source_uri_from_playlist_uri ( source=0xa9e7178, uri=0xb954370 "/Music/Wes Burden/Brave New World/Brave New World.mp3") at rb-generic-player-source.c:696 #2 0x0905cd8f in handle_playlist_entry_cb (playlist=0xbd4d2a0, uri=0xb954370 "/Music/Wes Burden/Brave New World/Brave New World.mp3", metadata=0xb370f260, source=0xab74cb8) at rb-generic-player-playlist-source.c:240 #3 0x00a14b2f in ?? () from /usr/lib/libtotem-plparser.so.12 #4 0x0050a072 in IA__g_closure_invoke (closure=0xbc69538, return_value=0x0, n_param_values=3, param_values=0xbd869e0, invocation_hint=0xbfa0b940) at /build/buildd/glib2.0-2.22.3/gobject/gclosure.c:767 #5 0x0051f7a8 in signal_emit_unlocked_R (node=<value optimized out>, detail=<value optimized out>, instance=0xbd4d2a0, emission_return=0x0, instance_and_params=0xbd869e0) at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:3247 #6 0x00520b2d in IA__g_signal_emit_valist (instance=0xbd4d2a0, signal_id=537, detail=0, var_args=0xbfa0bb04 "\001") at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:2980 #7 0x00520fb6 in IA__g_signal_emit (instance=0xbd4d2a0, signal_id=537, detail=0) at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:3037 #8 0x00a1009d in ?? () from /usr/lib/libtotem-plparser.so.12 #9 0x00a114d7 in ?? () from /usr/lib/libtotem-plparser.so.12 #10 0x00a121f7 in ?? () from /usr/lib/libtotem-plparser.so.12 #11 0x00a13d33 in ?? () from /usr/lib/libtotem-plparser.so.12 #12 0x00a1206b in ?? () from /usr/lib/libtotem-plparser.so.12 #13 0x00a126c9 in totem_pl_parser_parse_with_base () from /usr/lib/libtotem-plparser.so.12 #14 0x0905cb11 in load_playlist (type=178128376, n_construct_properties=9, construct_properties=0xbd795e0) at rb-generic-player-playlist-source.c:294 #15 impl_constructor (type=178128376, n_construct_properties=9, construct_properties=0xbd795e0) at rb-generic-player-playlist-source.c:393 #16 0x00510b62 in IA__g_object_newv (object_type=178128376, n_parameters=7, parameters=0xaa01798) at /build/buildd/glib2.0-2.22.3/gobject/gobject.c:1252 #17 0x005115f1 in IA__g_object_new_valist (object_type=178128376, first_property_name=0x905e06e "shell", var_args=0xbfa0bfbc "") at /build/buildd/glib2.0-2.22.3/gobject/gobject.c:1364 #18 0x0051170e in IA__g_object_new (object_type=178128376, first_property_name=0x905e06e "shell") at /build/buildd/glib2.0-2.22.3/gobject/gobject.c:1086 #19 0x0905c00c in rb_generic_player_playlist_source_new (shell=0xa167010, source=0xa9e7178, playlist_file=0xb5ca760 "/media/ARCHOS5/Playlists/sample playlist.m3u", device_root=0xb564ef8 "file:///media/ARCHOS5", entry_type=0xb483b78) at rb-generic-player-playlist-source.c:349 #20 0x0905a033 in load_playlist_file (source=0xa9e7178, playlist_path=0xb5ca760 "/media/ARCHOS5/Playlists/sample playlist.m3u", rel_path=0xbbc8050 "sample playlist.m3u") at rb-generic-player-source.c:725 #21 0x0905a74d in visit_playlist_dirs (file=0xbce8a20, dir=0, source=0xa9e7178) at rb-generic-player-source.c:782 #22 0x001d6fa0 in _uri_handle_recurse (dir=<value optimized out>, cancel=<value optimized out>, handled=0xb378d9b0, func=0x905a640 <visit_playlist_dirs>, user_data=0xa9e7178) at rb-file-helpers.c:667 #23 0x001d70de in rb_uri_handle_recursively ( text_uri=0xb8bd3d8 "file:///media/ARCHOS5/Playlists", cancel=0x0, func=0x905a640 <visit_playlist_dirs>, user_data=0xa9e7178) at rb-file-helpers.c:696 #24 0x0905a63a in default_load_playlists (source=0xa9e7178) at rb-generic-player-source.c:832 #25 0x0905b852 in import_complete_cb (job=0xb9a98c0, total=1674, source=0xa9e7178) at rb-generic-player-source.c:426 #26 0x00517748 in IA__g_cclosure_marshal_VOID__INT (closure=0xbafe980, return_value=0x0, n_param_values=2, param_values=0xb4f2e00, invocation_hint=0xbfa0c350, marshal_data=0x905b7b0) at /build/buildd/glib2.0-2.22.3/gobject/gmarshal.c:216 #27 0x0050a072 in IA__g_closure_invoke (closure=0xbafe980, return_value=0x0, n_param_values=2, param_values=0xb4f2e00, invocation_hint=0xbfa0c350) at /build/buildd/glib2.0-2.22.3/gobject/gclosure.c:767 #28 0x0051f7a8 in signal_emit_unlocked_R (node=<value optimized out>, detail=<value optimized out>, instance=0xb9a98c0, emission_return=0x0, instance_and_params=0xb4f2e00) at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:3247 #29 0x00520b2d in IA__g_signal_emit_valist (instance=0xb9a98c0, signal_id=536, detail=0, var_args=0xbfa0c510 "\371\070!") at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:2980 #30 0x00520fb6 in IA__g_signal_emit (instance=0xb9a98c0, signal_id=536, detail=0) at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:3037 #31 0x001b64f1 in emit_status_changed (job=0xb9a98c0) at rhythmdb-import-job.c:157 #32 0x00cb4101 in g_idle_dispatch (source=0xb773958, callback=0xa9e7178, user_data=0xb9a98c0) at /build/buildd/glib2.0-2.22.3/glib/gmain.c:4065 #33 0x00cb5e88 in g_main_dispatch (context=0xa11fca8) at /build/buildd/glib2.0-2.22.3/glib/gmain.c:1960 #34 IA__g_main_context_dispatch (context=0xa11fca8) at /build/buildd/glib2.0-2.22.3/glib/gmain.c:2513 #35 0x00cb9730 in g_main_context_iterate (context=0xa11fca8, block=<value optimized out>, dispatch=1, self=0x9fe1028) at /build/buildd/glib2.0-2.22.3/glib/gmain.c:2591 #36 0x00cb9b9f in IA__g_main_loop_run (loop=0xa3ee0b8) at /build/buildd/glib2.0-2.22.3/glib/gmain.c:2799 #37 0x01134419 in IA__gtk_main () at /build/buildd/gtk+2.0-2.18.3/gtk/gtkmain.c:1218 #38 0x0804b46e in main (argc=1, argv=0xbfa0c834) at main.c:336 b.
Attachment:
signature.asc
Description: This is a digitally signed message part