From: Andrew Stanley-J. <as...@cb...> - 2006-01-28 00:47:41
|
This happends in stock cvs. Easy way to reproduce it: select a play list, select sync from the popup menu. Wait for it to finish. Right click, select sync again, segfault. Maybe someone can find it faster than me. Valgrind spits the following out (my line numbers might be off by a couple): ==20759== Invalid free() / delete / delete[] ==20759== at 0x401BF37: free (vg_replace_malloc.c:235) ==20759== by 0x4783C91: g_free (in /usr/lib/libglib-2.0.so.0.800.6) ==20759== by 0x808095E: copy_new_info (file.c:758) ==20759== by 0x808164D: get_track_info_from_file (file.c:1109) ==20759== by 0x808305B: update_track_from_file (file.c:1915) ==20759== by 0x808345C: add_track_by_filename (file.c:2059) ==20759== by 0x807FD9B: add_directory_by_name (file.c:402) ==20759== by 0x807FD3F: add_directory_by_name (file.c:390) ==20759== by 0x8081CAB: sync_dir (file.c:1311) ==20759== by 0x476F505: g_hash_table_foreach (in /usr/lib/libglib-2.0.so.0.800.6) ==20759== by 0x8081DFB: sync_dir_ok (file.c:1358) ==20759== by 0x805F47A: gtkpod_confirmation (confirmation.c:334) ==20759== Address 0x4EF0958 is 0 bytes inside a block of size 8 free'd ==20759== at 0x401BF37: free (vg_replace_malloc.c:235) ==20759== by 0x4783C91: g_free (in /usr/lib/libglib-2.0.so.0.800.6) ==20759== by 0x4235CF0: gtk_tree_path_free (in /usr/lib/libgtk-x11-2.0.so.0.800.10) ==20759== by 0x424F712: (within /usr/lib/libgtk-x11-2.0.so.0.800.10) ==20759== by 0x424FCC0: (within /usr/lib/libgtk-x11-2.0.so.0.800.10) ==20759== by 0x424FD87: (within /usr/lib/libgtk-x11-2.0.so.0.800.10) ==20759== by 0x477F0F0: (within /usr/lib/libglib-2.0.so.0.800.6) ==20759== by 0x477CB8B: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.800.6) ==20759== by 0x477FF6A: (within /usr/lib/libglib-2.0.so.0.800.6) ==20759== by 0x4780446: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.800.6) ==20759== by 0x417CAC4: gtk_main_iteration (in /usr/lib/libgtk-x11-2.0.so.0.800.10) ==20759== by 0x80831FF: update_track_from_file (file.c:1973) copy_new_info free's a bunch of strings and these strings to have been freed already, probably by update_track_from_file. valgrind then continues to spit out errors by the list boxes trying to paint invalid strings, but that's probably just symptoms. Cheers, -Andrew --- Andrew Stanley-Jones | "It's kind of fun to do the impossible." EE, LongEz N87KJ | -- Walt Disney |
From: Jorg S. <Jor...@gm...> - 2006-02-19 05:59:35
|
Should be fixed with the latest CVS version (add eto->thumb_path_utf8 = g_strdup (efrom->thumb_path_utf8); eto->thumb_path_locale = g_strdup (efrom->thumb_path_locale); in copy_new_info() in file.c). Cheers, JCS. On Fri, Jan 27, 2006 at 07:47:36PM -0500, Andrew Stanley-Jones wrote: > > This happends in stock cvs. > > Easy way to reproduce it: select a play list, select sync from the popup > menu. Wait for it to finish. Right click, select sync again, segfault. > Maybe someone can find it faster than me. |