5 second timeout thing ...



Hi guys,

	I think there's a mis-behaving timeout effect in gnome-vfs, it seems
that nautilus monitors the mime database for changes, and re-renders all
it's windows on change. If this re-rendering process takes ~5 seconds [
as it can with my huge directory ], then the net effect is that every
gnome-vfs call re-parses the entire mime database, and renders all the
windows.

	This is not optimal ;-) it could even be the cause of the non-linearity
on large directories we see. So ... I'm wondering why there is a timeout
there ? and why we re-parse without statting to see if we need to first
?

	Regards,

		Michael.

PS. the trace looks something like this, the analyis is mostly
guesswork:

#0  0x40861ae9 in g_hash_table_lookup (hash_table=0x81e7be0,
key=0x85d8330) at ghash.c:192
#1  0x40cc41ea in do_is_local (method=0x40cc7960, uri=0x83d1d98) at
file-method.c:897
#2  0x406b42c1 in gnome_vfs_uri_is_local (uri=0x83d1d98) at
gnome-vfs-uri.c:1149
#3  0x4005a289 in nautilus_directory_is_local (directory=0x86b49a8) at
nautilus-directory.c:523
#4  0x4006995c in nautilus_file_is_local (file=0x8fbf9c8) at
nautilus-file.c:1173
#5  0x400880ef in nautilus_icon_factory_get_icon_for_file
(file=0x8fbf9c8, modifier=0x400b850d "")
    at nautilus-icon-factory.c:1173
#6  0x080926a0 in fm_icon_container_get_icon_images
(container=0x8133e60, data=0x8fbf9c8, 
    modifier=0x400b850d "", emblem_icons=0xbfffde20) at
fm-icon-container.c:74
#7  0x4007eb97 in nautilus_icon_container_get_icon_images
(container=0x8133e60, data=0x8fbf9c8, 
    modifier=0x400b850d "", emblem_icons=0xbfffde20) at
nautilus-icon-container.c:3775
#8  0x4007ec9f in nautilus_icon_container_update_icon
(container=0x8133e60, icon=0xa8a2e30)
    at nautilus-icon-container.c:3816
#9  0x4007fefa in nautilus_icon_container_request_update_all
(container=0x8133e60)
    at nautilus-icon-container.c:4156
#10 0x40815cca in g_cclosure_marshal_VOID__VOID (closure=0x827e310,
return_value=0x0, n_param_values=1, 
    param_values=0xbfffe1f0, invocation_hint=0xbfffe0f8,
marshal_data=0x0) at gmarshal.c:77
#11 0x40800f7a in g_closure_invoke (closure=0x827e310, return_value=0x0,
n_param_values=1, 
    param_values=0xbfffe1f0, invocation_hint=0xbfffe0f8) at
gclosure.c:437
#12 0x40814e9f in signal_emit_unlocked_R (node=0x8203e58, detail=0,
instance=0x8201968, emission_return=0x0, 
    instance_and_params=0xbfffe1f0) at gsignal.c:2341
#13 0x4081363e in g_signal_emit_valist (instance=0x8201968,
signal_id=189, detail=0, var_args=0xbfffe37c)
    at gsignal.c:2100
#14 0x408138bb in g_signal_emit (instance=0x8201968, signal_id=189,
detail=0) at gsignal.c:2144
#15 0x400878c6 in mime_type_data_changed_callback (monitor=0x8202040,
user_data=0x0)
    at nautilus-icon-factory.c:904
#16 0x40815cca in g_cclosure_marshal_VOID__VOID (closure=0x8202160,
return_value=0x0, n_param_values=1, 
    param_values=0xbfffe680, invocation_hint=0xbfffe588,
marshal_data=0x0) at gmarshal.c:77
#17 0x40800f7a in g_closure_invoke (closure=0x8202160, return_value=0x0,
n_param_values=1, 
    param_values=0xbfffe680, invocation_hint=0xbfffe588) at
gclosure.c:437
#18 0x40814e9f in signal_emit_unlocked_R (node=0x8201cd8, detail=0,
instance=0x8202040, emission_return=0x0, 
    instance_and_params=0xbfffe680) at gsignal.c:2341
#19 0x4081363e in g_signal_emit_valist (instance=0x8202040,
signal_id=190, detail=0, var_args=0xbfffe80c)
    at gsignal.c:2100
#20 0x408138bb in g_signal_emit (instance=0x8202040, signal_id=190,
detail=0) at gsignal.c:2144
#21 0x406ac9cd in gnome_vfs_mime_monitor_emit_data_changed
(monitor=0x8202040) at gnome-vfs-mime-monitor.c:169
#22 0x406aa0d8 in gnome_vfs_mime_info_reload () at
gnome-vfs-mime-info.c:768
#23 0x406a9f4c in reload_if_needed () at gnome-vfs-mime-info.c:706
#24 0x406aa42d in get_value_real (mime_type=0x811a210 "x-directory/*",
key=0x406bbefc "deleted", 
    user_hash_table=0x80ee3a0, system_hash_table=0x80ed7c0) at
gnome-vfs-mime-info.c:914
#25 0x406aae43 in gnome_vfs_mime_get_registered_mime_type_key
(mime_type=0x811a210 "x-directory/*", 
    key=0x406bbefc "deleted") at gnome-vfs-mime-info.c:1489
#26 0x406aa2a7 in is_mime_type_deleted (mime_type=0x811a210
"x-directory/*") at gnome-vfs-mime-info.c:876
#27 0x406aa453 in get_value_real (mime_type=0x811a210 "x-directory/*", 
---Type <return> to continue, or q <return> to quit---
    key=0x406bbd40 "short_list_component_user_removals",
user_hash_table=0x80ed820, system_hash_table=0x80eda98)
    at gnome-vfs-mime-info.c:916
#28 0x406aa537 in gnome_vfs_mime_get_value (mime_type=0x811a210
"x-directory/*", 
    key=0x406bbd40 "short_list_component_user_removals") at
gnome-vfs-mime-info.c:968
#29 0x406a7ca9 in gnome_vfs_mime_get_short_list_components
(mime_type=0xaee7060 "x-directory/normal")
    at gnome-vfs-mime-handlers.c:685
#30 0x40094aac in nautilus_mime_get_short_list_components_for_file
(file=0x85d7710)
    at nautilus-mime-actions.c:587
#31 0x4009441c in nautilus_mime_get_default_component_sort_conditions
(file=0x85d7710, 
    default_component_string=0xaee6fe0
"OAFIID:Nautilus_File_Manager_Icon_View") at nautilus-mime-actions.c:287
#32 0x40094683 in nautilus_mime_get_default_component_for_file_internal
(file=0x85d7710, user_chosen=0x0)
    at nautilus-mime-actions.c:389
#33 0x400947a0 in nautilus_mime_get_default_component_for_file
(file=0x85d7710) at nautilus-mime-actions.c:435
#34 0x0805f2e1 in got_file_info_callback (file=0x85d7710,
callback_data=0xad78700)
    at nautilus-applicable-views.c:110
#35 0x40051949 in ready_callback_call (directory=0x826a538,
callback=0xad785c8)
    at nautilus-directory-async.c:1210
#36 0x40052c03 in call_ready_callbacks (directory=0x826a538) at
nautilus-directory-async.c:1797
#37 0x400555ee in nautilus_directory_async_state_changed
(directory=0x826a538) at nautilus-directory-async.c:3056
#38 0x40054d43 in link_info_done (directory=0x826a538, file=0x85d7710,
uri=0x0, name=0x0, icon=0x0)
    at nautilus-directory-async.c:2782
#39 0x40052921 in lacks_link_info (file=0x85d7710) at
nautilus-directory-async.c:1680
#40 0x4005295b in has_problem (directory=0x826a538, file=0x85d7710,
problem=0x4005287c <lacks_link_info>)
    at nautilus-directory-async.c:1701
#41 0x40052b2d in request_is_satisfied (directory=0x826a538,
file=0x85d7710, request=0xbfffec80)
    at nautilus-directory-async.c:1758
#42 0x40051d28 in nautilus_directory_check_if_ready_internal
(directory=0x826a538, file=0x85d7710, 
    file_attributes=0xaea2334) at nautilus-directory-async.c:1302
#43 0x400a2bbd in vfs_file_check_if_ready (file=0x85d7710,
file_attributes=0xaea2334) at nautilus-vfs-file.c:91
#44 0x40070f19 in nautilus_file_check_if_ready (file=0x85d7710,
file_attributes=0xaea2334)
    at nautilus-file.c:4810
#45 0x08074626 in background_metadata_changed_callback
(sidebar=0x81f88f0) at nautilus-sidebar.c:1607
#46 0x40815cca in g_cclosure_marshal_VOID__VOID (closure=0x82ee178,
return_value=0x0, n_param_values=1, 
    param_values=0xbffff020, invocation_hint=0xbfffef28,
marshal_data=0x0) at gmarshal.c:77
#47 0x40800f7a in g_closure_invoke (closure=0x82ee178, return_value=0x0,
n_param_values=1, 
    param_values=0xbffff020, invocation_hint=0xbfffef28) at
gclosure.c:437
#48 0x40814e9f in signal_emit_unlocked_R (node=0x81e92a0, detail=0,
instance=0x85d7710, emission_return=0x0, 
    instance_and_params=0xbffff020) at gsignal.c:2341
#49 0x4081363e in g_signal_emit_valist (instance=0x85d7710,
signal_id=180, detail=0, var_args=0xbffff1ac)
    at gsignal.c:2100
#50 0x408138bb in g_signal_emit (instance=0x85d7710, signal_id=180,
detail=0) at gsignal.c:2144
#51 0x40070c34 in nautilus_file_emit_changed (file=0x85d7710) at
nautilus-file.c:4740
#52 0x4005ad6d in nautilus_directory_emit_change_signals
(directory=0x826a538, changed_files=0xbffff210)
    at nautilus-directory.c:743
---Type <return> to continue, or q <return> to quit---
#53 0x400709fc in nautilus_file_changed (file=0x85d7710) at
nautilus-file.c:4686
#54 0x400549ab in get_info_callback (handle=0x60, results=0xad774a0,
callback_data=0x826a538)
    at nautilus-directory-async.c:2682
#55 0x406a49fc in dispatch_get_file_info_callback
(notify_result=0xad78a98) at gnome-vfs-job.c:269
#56 0x406a4f45 in dispatch_job_callback (data=0xad78a98) at
gnome-vfs-job.c:550
#57 0x4086cd40 in g_idle_dispatch (source=0xad78b88, callback=0x406a4e08
<dispatch_job_callback>, 
    user_data=0xad78a98) at gmain.c:3129
#58 0x4086a6fe in g_main_dispatch (context=0x80cbf90) at gmain.c:1617
#59 0x4086b515 in g_main_context_dispatch (context=0x80cbf90) at
gmain.c:2161
#60 0x4086b8a8 in g_main_context_iterate (context=0x80cbf90, block=1,
dispatch=1, self=0x80be2a8) at gmain.c:2242
#61 0x4086bf4e in g_main_loop_run (loop=0x8240a48) at gmain.c:2462
#62 0x403d64bf in gtk_main () at gtkmain.c:936
#63 0x08066475 in main (argc=1, argv=0xbffff664) at nautilus-main.c:263
#64 0x409de316 in __libc_start_main (main=0x8065fb8 <main>, argc=1,
ubp_av=0xbffff664, init=0x8059fc0 <_init>, 
    fini=0x80a0c70 <_fini>, rtld_fini=0x4000d2fc <_dl_fini>,
stack_end=0xbffff65c)
    at ../sysdeps/generic/libc-start.c:129


-- 
 mmeeks gnu org  <><, Pseudo Engineer, itinerant idiot




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]