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 614219 - Crashes when switching off libgphoto camera
Crashes when switching off libgphoto camera
Status: RESOLVED FIXED
Product: gthumb
Classification: Other
Component: general
2.11.x
Other Linux
: Normal critical
: ---
Assigned To: Paolo Bacchilega
Paolo Bacchilega
: 646686 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2010-03-29 07:09 UTC by Martin Pitt
Modified: 2011-04-04 12:06 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Martin Pitt 2010-03-29 07:09:46 UTC
This crash was recently introduced in git head, presumably in the change to handle gvfs mounts/unmounts dynamically.

Reproducer:
 - Start gthumb

 - Switch on libgphoto camera


Volume added:       'Canon Digital Camera'
  Volume(0): Canon Digital Camera
    Type: GProxyVolume (GProxyVolumeMonitorGPhoto2)
    ids:
     unix-device: '/dev/bus/usb/001/011'
    activation_root=gphoto2://[usb:001,011]/
    themed icons:  [camera-photo]
    can_mount=1
    can_eject=0
    should_automount=1

Mount added: 'Canon Digital Camera'
  Mount(0): Canon Digital Camera -> gphoto2://[usb:001,011]/
    Type: GDaemonMount
    default_location=gphoto2://[usb:001,011]/
    themed icons:  [camera-photo]  [camera]
    x_content_types: x-content/image-dcf
    can_unmount=1
    can_eject=0
    is_shadowed=0

Mount changed: 'Canon Digital Camera'
  Mount(0): Canon Digital Camera -> gphoto2://[usb:001,011]/
    Type: GDaemonMount
    default_location=gphoto2://[usb:001,011]/
    themed icons:  [camera-photo]  [camera]
    x_content_types: x-content/image-dcf
    can_unmount=1
    can_eject=0
    is_shadowed=1

Mount added: 'Canon Digital Camera'
  Mount(0): Canon Digital Camera -> gphoto2://[usb:001,011]/
    Type: GProxyShadowMount (GProxyVolumeMonitorGPhoto2)
    default_location=gphoto2://[usb:001,011]/
    themed icons:  [camera-photo]
    x_content_types: x-content/image-dcf
    can_unmount=1
    can_eject=0
    is_shadowed=0

Mount changed: 'Canon Digital Camera'
  Mount(0): Canon Digital Camera -> gphoto2://[usb:001,011]/
    Type: GProxyShadowMount (GProxyVolumeMonitorGPhoto2)
    default_location=gphoto2://[usb:001,011]/
    themed icons:  [camera-photo]
    x_content_types: x-content/image-dcf
    can_unmount=1
    can_eject=0
    is_shadowed=0

 After that the camera appears in gthumb's side bar.

 - Switch off camera

Volume removed:     'Canon Digital Camera'
  Volume(0): Canon Digital Camera
    Type: GProxyVolume (GProxyVolumeMonitorGPhoto2)
    ids:
     unix-device: '/dev/bus/usb/001/011'
    activation_root=gphoto2://[usb:001,011]/
    themed icons:  [camera-photo]
    can_mount=1
    can_eject=0
    should_automount=1
    Mount(0): Canon Digital Camera -> gphoto2://[usb:001,011]/
      Type: GProxyShadowMount (GProxyVolumeMonitorGPhoto2)
      default_location=gphoto2://[usb:001,011]/
      themed icons:  [camera-photo]
      x_content_types: x-content/image-dcf
      can_unmount=1
      can_eject=0
      is_shadowed=0

Mount removed: 'Canon Digital Camera'
  Mount(0): Canon Digital Camera -> gphoto2://[usb:001,011]/
    Type: GProxyShadowMount (GProxyVolumeMonitorGPhoto2)
    default_location=gphoto2://[usb:001,011]/
    themed icons:  [camera-photo]
    x_content_types: x-content/image-dcf
    can_unmount=1
    can_eject=0
    is_shadowed=0

Mount changed: 'Canon Digital Camera'
  Mount(0): Canon Digital Camera -> gphoto2://[usb:001,011]/
    Type: GDaemonMount
    default_location=gphoto2://[usb:001,011]/
    themed icons:  [camera-photo]  [camera]
    x_content_types: x-content/image-dcf
    can_unmount=1
    can_eject=0
    is_shadowed=0

Mount removed: 'Canon Digital Camera'
  Mount(0): Canon Digital Camera -> gphoto2://[usb:001,011]/
    Type: GDaemonMount
    default_location=gphoto2://[usb:001,011]/
    themed icons:  [camera-photo]  [camera]
    x_content_types: x-content/image-dcf
    can_unmount=1
    can_eject=0
    is_shadowed=0

Now gthumb crashes:

Program received signal SIGPIPE, Broken pipe.
0x00007ffff3073671 in __libc_writev (fd=27, vector=0x7fffffffce70, count=2)


0  0x00007ffff3073671 in __libc_writev (fd=27, vector=0x7fffffffce70, count=2)
    at ../sysdeps/unix/sysv/linux/writev.c:56
        _a3 = 2
        _a1 = 27
        resultvar = <value optimized out>
        _a2 = 140737488342640
        oldtype = 0
        result = <value optimized out>
  • #1 _dbus_write_two
    at dbus-sysdeps-unix.c line 425
  • #2 do_writing
    at dbus-transport-socket.c line 597
  • #3 socket_do_iteration
    at dbus-transport-socket.c line 1016
  • #4 _dbus_transport_do_iteration
    at dbus-transport.c line 956
  • #5 _dbus_connection_do_iteration_unlocked
    at dbus-connection.c line 1163
  • #6 _dbus_connection_send_preallocated_unlocked_no_update
    at dbus-connection.c line 1984
  • #7 _dbus_connection_send_unlocked_no_update
    at dbus-connection.c line 3100
  • #8 dbus_connection_send_with_reply
    at dbus-connection.c line 3263
  • #9 dbus_connection_send_with_reply_and_block
    at dbus-connection.c line 3341
  • #10 ??
    from /usr/lib/gio/modules/libgvfsdbus.so
  • #11 ??
    from /usr/lib/gio/modules/libgvfsdbus.so
  • #12 ??
    from /usr/lib/gio/modules/libgvfsdbus.so
  • #13 gth_file_source_vfs_get_file_info
    at gth-file-source-vfs.c line 156
  • #14 gth_file_source_get_file_info
    at gth-file-source.c line 843
  • #15 gth_file_source_vfs_get_entry_points
    at gth-file-source-vfs.c line 102
  • #16 gth_file_source_get_entry_points
    at gth-file-source.c line 804
  • #17 update_entry_point_list
    at gth-location-chooser.c line 288
  • #18 entry_points_changed_cb
    at gth-location-chooser.c line 310
  • #19 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #20 ??
    from /usr/lib/libgobject-2.0.so.0
  • #21 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #22 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #23 gth_monitor_file_entry_points_changed
    at gth-monitor.c line 323
  • #24 mount_monitor_mountpoints_changed_cb
    at gth-file-source-vfs.c line 309
  • #25 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #26 ??
    from /usr/lib/libgobject-2.0.so.0
  • #27 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #28 g_signal_emit_by_name
    from /usr/lib/libgobject-2.0.so.0
  • #29 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #30 ??
    from /usr/lib/libgobject-2.0.so.0
  • #31 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #32 g_signal_emit_by_name
    from /usr/lib/libgobject-2.0.so.0
  • #33 ??
    from /usr/lib/gio/modules/libgioremote-volume-monitor.so
  • #34 g_main_context_dispatch
    from /lib/libglib-2.0.so.0
  • #35 ??
    from /lib/libglib-2.0.so.0
  • #36 g_main_loop_run
    from /lib/libglib-2.0.so.0
  • #37 gtk_main
    from /usr/lib/libgtk-x11-2.0.so.0
  • #38 main
    at main.c line 435

Comment 1 Michael Chudobiak 2010-04-28 17:16:54 UTC
Still happens:

[Thread 0x7fffea6c4710 (LWP 16912) exited]
[New Thread 0x7fffe8820710 (LWP 16928)]
[New Thread 0x7fffea6c4710 (LWP 16929)]
[New Thread 0x7fffe9c63710 (LWP 16930)]
[New Thread 0x7fffe9221710 (LWP 16931)]
[New Thread 0x7fffd3fff710 (LWP 16932)]
[Thread 0x7fffd3fff710 (LWP 16932) exited]
Detaching after fork from child process 16933.
[New Thread 0x7fffd3fff710 (LWP 16934)]
[Thread 0x7fffea6c4710 (LWP 16929) exited]
[Thread 0x7fffe9c63710 (LWP 16930) exited]

** (gthumb:16904): WARNING **: Error stating file '/fileserver/home/mjc/.gvfs/gphoto2 mount on usb%3A001,008': No such file or directory

Program received signal SIGPIPE, Broken pipe.
0x0000003ee76d6a37 in writev () from /lib64/libc.so.6

Thread 1 (Thread 0x7ffff7fbe7e0 (LWP 16904))

  • #0 writev
    from /lib64/libc.so.6
  • #1 ??
    from /lib64/libdbus-1.so.3
  • #2 ??
    from /lib64/libdbus-1.so.3
  • #3 ??
    from /lib64/libdbus-1.so.3
  • #4 ??
    from /lib64/libdbus-1.so.3
  • #5 ??
    from /lib64/libdbus-1.so.3
  • #6 ??
    from /lib64/libdbus-1.so.3
  • #7 ??
    from /lib64/libdbus-1.so.3
  • #8 dbus_connection_send_with_reply
    from /lib64/libdbus-1.so.3
  • #9 dbus_connection_send_with_reply_and_block
    from /lib64/libdbus-1.so.3
  • #10 ??
    from /usr/lib64/gio/modules/libgvfsdbus.so
  • #11 ??
    from /usr/lib64/gio/modules/libgvfsdbus.so
  • #12 ??
    from /usr/lib64/gio/modules/libgvfsdbus.so
  • #13 gth_file_source_vfs_get_entry_points
    at gth-file-source-vfs.c line 102
  • #14 update_entry_point_list
    at gth-location-chooser.c line 288
  • #15 g_closure_invoke
    from /lib64/libgobject-2.0.so.0
  • #16 ??
    from /lib64/libgobject-2.0.so.0
  • #17 g_signal_emit_valist
    from /lib64/libgobject-2.0.so.0
  • #18 g_signal_emit
    from /lib64/libgobject-2.0.so.0
  • #19 g_closure_invoke
    from /lib64/libgobject-2.0.so.0
  • #20 ??
    from /lib64/libgobject-2.0.so.0
  • #21 g_signal_emit_valist
    from /lib64/libgobject-2.0.so.0
  • #22 g_signal_emit_by_name
    from /lib64/libgobject-2.0.so.0
  • #23 g_closure_invoke
    from /lib64/libgobject-2.0.so.0
  • #24 ??
    from /lib64/libgobject-2.0.so.0
  • #25 g_signal_emit_valist
    from /lib64/libgobject-2.0.so.0
  • #26 g_signal_emit_by_name
    from /lib64/libgobject-2.0.so.0
  • #27 ??
    from /usr/lib64/gio/modules/libgvfsdbus.so
  • #28 g_closure_invoke
    from /lib64/libgobject-2.0.so.0
  • #29 ??
    from /lib64/libgobject-2.0.so.0
  • #30 g_signal_emit_valist
    from /lib64/libgobject-2.0.so.0
  • #31 g_signal_emit
    from /lib64/libgobject-2.0.so.0
  • #32 ??
    from /usr/lib64/libgvfscommon.so.0
  • #33 dbus_connection_dispatch
    from /lib64/libdbus-1.so.3
  • #34 ??
    from /usr/lib64/libgvfscommon.so.0
  • #35 g_main_context_dispatch
    from /lib64/libglib-2.0.so.0
  • #36 ??
    from /lib64/libglib-2.0.so.0
  • #37 g_main_loop_run
    from /lib64/libglib-2.0.so.0
  • #38 gtk_main
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #39 main
    at main.c line 438

Comment 2 Michael Chudobiak 2010-04-28 17:17:52 UTC
It is not reproducible every time. There seems to be a timing issue.

- Mike
Comment 3 Michael Chudobiak 2010-04-28 17:35:42 UTC
A different backtrace from device unplugging:

Program received signal SIGSEGV, Segmentation fault.
thumb_loader_ready_cb (tloader=0xe7de60 [GthThumbLoader], error=0x0, data=0xd8e140) at gth-file-list.c:397
397		if (file_list->priv->thumb_fd != NULL) {


Thread 1 (Thread 0x7ffff7fbe7e0 (LWP 17790))

  • #0 thumb_loader_ready_cb
    at gth-file-list.c line 397
  • #1 IA__g_closure_invoke
    at gclosure.c line 767
  • #2 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #3 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #4 IA__g_signal_emit
    at gsignal.c line 3037
  • #5 image_loader_loaded
    at gth-thumb-loader.c line 343
  • #6 watch_thumbnailer_cb
    at gth-thumb-loader.c line 638
  • #7 g_child_watch_dispatch
    at gmain.c line 3774
  • #8 g_main_dispatch
    at gmain.c line 1960
  • #9 IA__g_main_context_dispatch
    at gmain.c line 2513
  • #10 g_main_context_iterate
    at gmain.c line 2591
  • #11 IA__g_main_loop_run
    at gmain.c line 2799
  • #12 IA__gtk_main
    at gtkmain.c line 1218
  • #13 main
    at main.c line 438


- Mike
Comment 4 Michael Chudobiak 2010-04-28 18:34:38 UTC
"use gth_main_get_all_entry_points to simplify the code...and maybe fix bug 614219"

No, still crashes:

Program received signal SIGPIPE, Broken pipe.
0x0000003ee76d6a37 in __libc_writev (fd=<value optimized out>, 
    vector=<value optimized out>, count=<value optimized out>)
    at ../sysdeps/unix/sysv/linux/writev.c:56
56	      result = INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count);



Thread 1 (Thread 0x7ffff7fbe7e0 (LWP 28998))

  • #0 __libc_writev
    at ../sysdeps/unix/sysv/linux/writev.c line 56
  • #1 _dbus_write_two
    at dbus-sysdeps-unix.c line 425
  • #2 do_writing
    at dbus-transport-socket.c line 597
  • #3 socket_do_iteration
    at dbus-transport-socket.c line 1016
  • #4 _dbus_transport_do_iteration
    at dbus-transport.c line 956
  • #5 _dbus_connection_do_iteration_unlocked
    at dbus-connection.c line 1163
  • #6 _dbus_connection_send_preallocated_unlocked_no_update
    at dbus-connection.c line 1984
  • #7 _dbus_connection_send_unlocked_no_update
    at dbus-connection.c line 3100
  • #8 dbus_connection_send_with_reply
    at dbus-connection.c line 3263
  • #9 dbus_connection_send_with_reply_and_block
    at dbus-connection.c line 3341
  • #10 _g_vfs_daemon_call_sync
    at gvfsdaemondbus.c line 812
  • #11 do_sync_path_call
    at gdaemonfile.c line 433
  • #12 g_daemon_file_query_info
    at gdaemonfile.c line 847
  • #13 gth_file_source_vfs_get_entry_points
    at gth-file-source-vfs.c line 102
  • #14 gth_main_get_all_entry_points
    at gth-main.c line 348
  • #15 update_entry_point_list
    at gth-location-chooser.c line 284
  • #16 IA__g_closure_invoke
    at gclosure.c line 767
  • #17 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #18 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #19 IA__g_signal_emit
    at gsignal.c line 3037
  • #20 IA__g_closure_invoke
    at gclosure.c line 767
  • #21 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #22 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #23 IA__g_signal_emit_by_name
    at gsignal.c line 3074
  • #24 IA__g_closure_invoke
    at gclosure.c line 767
  • #25 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #26 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #27 IA__g_signal_emit_by_name
    at gsignal.c line 3074
  • #28 mount_removed
    at gdaemonvolumemonitor.c line 191
  • #29 IA__g_closure_invoke
    at gclosure.c line 767
  • #30 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #31 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #32 IA__g_signal_emit
    at gsignal.c line 3037
  • #33 g_mount_tracker_remove_mount
    at gmounttracker.c line 401
  • #34 g_mount_tracker_filter_func
    at gmounttracker.c line 466
  • #35 dbus_connection_dispatch
    at dbus-connection.c line 4444
  • #36 dbus_source_dispatch
    at gdbusutils.c line 810
  • #37 g_main_dispatch
    at gmain.c line 1960
  • #38 IA__g_main_context_dispatch
    at gmain.c line 2513
  • #39 g_main_context_iterate
    at gmain.c line 2591
  • #40 IA__g_main_loop_run
    at gmain.c line 2799
  • #41 IA__gtk_main
    at gtkmain.c line 1218
  • #42 main
    at main.c line 438

Comment 5 Michael Chudobiak 2010-04-29 12:18:35 UTC
The "update the entry points in an idle callback" commit seems to have reduced the frequency of crashes, but it hasn't eliminated them:

** (gthumb:11239): WARNING **: Error stating file '/fileserver/home/mjc/.gvfs/gphoto2 mount on usb%3A001,015/DCIM/102_FUJI/DSCF2218.AVI': No such file or directory

Program received signal SIGPIPE, Broken pipe.
0x0000003ee76d6a37 in __libc_writev (fd=<value optimized out>, 
    vector=<value optimized out>, count=<value optimized out>)
    at ../sysdeps/unix/sysv/linux/writev.c:56
56	      result = INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count);



Thread 1 (Thread 0x7ffff7fbe7e0 (LWP 11239))

  • #0 __libc_writev
    at ../sysdeps/unix/sysv/linux/writev.c line 56
  • #1 _dbus_write_two
    at dbus-sysdeps-unix.c line 425
  • #2 do_writing
    at dbus-transport-socket.c line 597
  • #3 socket_do_iteration
    at dbus-transport-socket.c line 1016
  • #4 _dbus_transport_do_iteration
    at dbus-transport.c line 956
  • #5 _dbus_connection_do_iteration_unlocked
    at dbus-connection.c line 1163
  • #6 _dbus_connection_send_preallocated_unlocked_no_update
  • #7 _dbus_connection_send_unlocked_no_update
    at dbus-connection.c line 3100
  • #8 dbus_connection_send_with_reply
    at dbus-connection.c line 3263
  • #9 dbus_connection_send_with_reply_and_block
    at dbus-connection.c line 3341
  • #10 _g_vfs_daemon_call_sync
    at gvfsdaemondbus.c line 812
  • #11 do_sync_path_call
    at gdaemonfile.c line 433
  • #12 g_daemon_file_query_info
    at gdaemonfile.c line 847
  • #13 gth_file_source_vfs_get_entry_points
    at gth-file-source-vfs.c line 102
  • #14 gth_main_get_all_entry_points
    at gth-main.c line 348
  • #15 _gth_browser_update_entry_point_list
    at gth-browser.c line 791
  • #16 IA__g_closure_invoke
    at gclosure.c line 767
  • #17 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #18 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #19 IA__g_signal_emit
    at gsignal.c line 3037
  • #20 IA__g_closure_invoke
    at gclosure.c line 767
  • #21 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #22 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #23 IA__g_signal_emit_by_name
    at gsignal.c line 3074
  • #24 IA__g_closure_invoke
    at gclosure.c line 767
  • #25 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #26 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #27 IA__g_signal_emit_by_name
    at gsignal.c line 3074
  • #28 mount_removed
    at gdaemonvolumemonitor.c line 191
  • #29 IA__g_closure_invoke
    at gclosure.c line 767
  • #30 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #31 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #32 IA__g_signal_emit
    at gsignal.c line 3037
  • #33 g_mount_tracker_remove_mount
    at gmounttracker.c line 401
  • #34 g_mount_tracker_filter_func
    at gmounttracker.c line 466
  • #35 dbus_connection_dispatch
    at dbus-connection.c line 4444
  • #36 dbus_source_dispatch
    at gdbusutils.c line 810
  • #37 g_main_dispatch
    at gmain.c line 1960
  • #38 IA__g_main_context_dispatch
    at gmain.c line 2513
  • #39 g_main_context_iterate
    at gmain.c line 2591
  • #40 IA__g_main_loop_run
    at gmain.c line 2799
  • #41 IA__gtk_main
    at gtkmain.c line 1218
  • #42 main
    at main.c line 438

Comment 6 Michael Chudobiak 2010-04-29 15:00:12 UTC
Still crashes after "update the entry points in an idle callback in gth-browser as well":

Program received signal SIGSEGV, Segmentation fault.
thumb_loader_ready_cb (tloader=0xd68f20 [GthThumbLoader], error=0x0, data=
    0xd509f0) at gth-file-list.c:397
397		if (file_list->priv->thumb_fd != NULL) {



Thread 1 (Thread 0x7ffff7fbd7e0 (LWP 5671))

  • #0 thumb_loader_ready_cb
  • #1 IA__g_closure_invoke
    at gclosure.c line 767
  • #2 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #3 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #4 IA__g_signal_emit
    at gsignal.c line 3037
  • #5 image_loader_loaded
    at gth-thumb-loader.c line 343
  • #6 watch_thumbnailer_cb
    at gth-thumb-loader.c line 638
  • #7 g_child_watch_dispatch
    at gmain.c line 3774
  • #8 g_main_dispatch
    at gmain.c line 1960
  • #9 IA__g_main_context_dispatch
    at gmain.c line 2513
  • #10 g_main_context_iterate
    at gmain.c line 2591
  • #11 IA__g_main_loop_run
    at gmain.c line 2799
  • #12 IA__gtk_main
    at gtkmain.c line 1218
  • #13 main
    at main.c line 438

Comment 7 Paolo Bacchilega 2010-04-29 15:42:11 UTC
what are the steps to reproduce the bug?
Comment 8 Michael Chudobiak 2010-04-29 16:35:02 UTC


Thread 1 (Thread 0x7ffff7fbd7e0 (LWP 7191))

  • #0 __libc_writev
    at ../sysdeps/unix/sysv/linux/writev.c line 56
  • #1 _dbus_write_two
    at dbus-sysdeps-unix.c line 425
  • #2 do_writing
    at dbus-transport-socket.c line 597
  • #3 socket_do_iteration
    at dbus-transport-socket.c line 1016
  • #4 _dbus_transport_do_iteration
    at dbus-transport.c line 956
  • #5 _dbus_connection_do_iteration_unlocked
    at dbus-connection.c line 1163
  • #6 _dbus_connection_send_preallocated_unlocked_no_update
    at dbus-connection.c line 1984
  • #7 _dbus_connection_send_unlocked_no_update
    at dbus-connection.c line 3100
  • #8 dbus_connection_send_with_reply
    at dbus-connection.c line 3263
  • #9 dbus_connection_send_with_reply_and_block
    at dbus-connection.c line 3341
  • #10 _g_vfs_daemon_call_sync
    at gvfsdaemondbus.c line 812
  • #11 do_sync_path_call
    at gdaemonfile.c line 433
  • #12 g_daemon_file_query_info
    at gdaemonfile.c line 847
  • #13 gth_file_source_vfs_get_entry_points
    at gth-file-source-vfs.c line 102
  • #14 gth_main_get_all_entry_points
    at gth-main.c line 348
  • #15 update_entry_point_list
    at gth-location-chooser.c line 284
  • #16 idle_call_exec_cb
    at glib-utils.c line 161
  • #17 g_main_dispatch
    at gmain.c line 1960
  • #18 IA__g_main_context_dispatch
    at gmain.c line 2513
  • #19 g_main_context_iterate
    at gmain.c line 2591
  • #20 IA__g_main_loop_run
    at gmain.c line 2799
  • #21 IA__gtk_main
    at gtkmain.c line 1218
  • #22 main
    at main.c line 438

Comment 9 Michael Chudobiak 2010-04-29 16:38:42 UTC
It's hard to reproduce now. It's a flaky timing thing.

The above backtrace was captured this way:

1. start gthumb.
2. turn on camera.
3. turn off camera just before thumbnails start appearing in the import dialog.
4. crash!

Some previous crashes were captured by:
1. start gthumb
2. turn on camera
3. let import dialog thumbnailing finish
4. hit cancel
5. turn off camera
6. crash!

However, I was unable to reproduce that crash sequence just now.

The recent commits have made things better, but not perfect yet.


- Mike
Comment 10 Michael Chudobiak 2010-04-29 19:28:59 UTC
Just to clarify, I just plug and unplug the camera, varying the time it is plugged in from 0 to 10 seconds, and varying the unplugged time similarly.

Sometimes I close the import dialog, sometimes I don't.

Eventually something crashes.

- Mike
Comment 11 Michael Chudobiak 2010-04-29 19:36:12 UTC
After your 5 commits of a few minutes ago, I can sometimes reproduce this crash:

1. start gthumb
2. turn on the camera
3. after the import dialog has been displayed for ~1 second, click cancel.
4. turn the camera off immediately after that.
5. crash

Thread 1 (Thread 0x7ffff7fbd7e0 (LWP 16995))

  • #0 thumb_loader_ready_cb
    at gth-file-list.c line 397
  • #1 IA__g_closure_invoke
    at gclosure.c line 767
  • #2 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #3 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #4 IA__g_signal_emit
    at gsignal.c line 3037
  • #5 IA__g_closure_invoke
    at gclosure.c line 767
  • #6 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #7 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #8 IA__g_signal_emit
    at gsignal.c line 3037
  • #9 _gth_image_loader_stop
    at gth-image-loader.c line 742
  • #10 _gth_image_loader_error
    at gth-image-loader.c line 581
  • #11 check_thread
    at gth-image-loader.c line 617
  • #12 g_timeout_dispatch
    at gmain.c line 3396
  • #13 g_main_dispatch
    at gmain.c line 1960
  • #14 IA__g_main_context_dispatch
    at gmain.c line 2513
  • #15 g_main_context_iterate
    at gmain.c line 2591
  • #16 IA__g_main_loop_run
    at gmain.c line 2799
  • #17 IA__gtk_main
    at gtkmain.c line 1218
  • #18 main
    at main.c line 438

Comment 12 Paolo Bacchilega 2010-04-29 20:59:01 UTC
Finally I managed to reproduce the bug, it should be fixed now.
Comment 13 Michael Chudobiak 2010-04-30 14:02:18 UTC
Yes, it seems to be fixed! Closing bug.

Martin, can you test git master (and re-open the bug if it still crashes)?

- Mike
Comment 14 Martin Pitt 2010-05-05 08:44:59 UTC
Just as a heads-up, I'm not quite dead yet :) I'm just travelling these weeks, and don't actually have my camera with me. But it seems you did an excellent job tracking this down, thanks!

I'll report back here in a few weeks, in the unlikely case I still see the crash.
Comment 15 Fabio Durán Verdugo 2011-04-04 12:06:10 UTC
*** Bug 646686 has been marked as a duplicate of this bug. ***