Hi, > I connect my camera and start gtkam. On the left side I select the > camera and after clicking on a folder to display the pictures in this > folder I receive the following backtrace. > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread -1219098944 (LWP 8863)] > 0xb7800f91 in gp_list_reset () from /usr/lib/libgphoto2.so.2 > (gdb) bt > #0 0xb7800f91 in gp_list_reset () from /usr/lib/libgphoto2.so.2 > #1 0xb77f60f1 in gp_camera_folder_list_files () > from /usr/lib/libgphoto2.so.2 > #2 0x0805887f in ?? () > #3 0x0821b728 in ?? () > #4 0x082b07a0 in ?? () > #5 0xbfff7bc8 in ?? () > #6 0x082afaf0 in ?? () > #7 0x00000001 in ?? () > #8 0x00000000 in ?? () > > Downgrading to 0.1.12-2.2 > > $ sudo dpkg -i /var/cache/apt/archives/gtkam_0.1.12-2.2_i386.deb > > solves the problem for me.
I got same problem. gtkam crashes with SIGSEGV after upgrade to 0.1.12-2.3. I have researched why gtkam crashes and how to fix this problem. The changes between 0.1.12-2.2 and 0.1.12-2.3 is just replacing 'CameraList' to 'CameraList*' to fix FTBFS(#422385) as follow. #422385 - gtkam: FTBFS: gtkam-chooser.c:431: error: storage size of 'list' isn't known - Debian Bug report logs http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=422385 Unfortunately, it was wrong. Some variable declarations has been changed, but references to that variable not changed. For example, once 'CameraList flist' replaced with 'CameraList *flist', it is necessary to replace '&flist' with 'flist' too. I have attached a patch to fix this bug. FYI, I have referenced upstream's SVN revision 9361 to make this patch. SourceForge.net Repository - [gphoto] Revision 9361 http://gphoto.svn.sourceforge.net/viewvc/gphoto?view=rev&revision=9361 Additionally, there is a newer upstream release as #432097 said. Updating to it will also resolves this problem. Thanks, Morita Sho
diff -ur gtkam-0.1.12.old/src/gtkam-chooser.c gtkam-0.1.12/src/gtkam-chooser.c --- gtkam-0.1.12.old/src/gtkam-chooser.c 2007-07-28 17:47:47.000000000 +0900 +++ gtkam-0.1.12/src/gtkam-chooser.c 2007-07-28 17:44:35.000000000 +0900 @@ -434,19 +434,20 @@ status = gtkam_status_new (_("Detecting cameras...")); gtkam_dialog_add_status (GTKAM_DIALOG (chooser), status); + gp_list_new (&list); result = gp_abilities_list_detect (chooser->priv->al, - chooser->priv->il, &list, + chooser->priv->il, list, GTKAM_STATUS (status)->context->context); switch (result) { case GP_OK: - if (!gp_list_count (&list)) { + if (!gp_list_count (list)) { d = gtkam_close_new (_("No cameras detected.")); gtk_window_set_transient_for (GTK_WINDOW (d), GTK_WINDOW (chooser)); gtk_widget_show (d); } else { /* FIXME: Let user choose from the list */ - gp_list_get_name (&list, 0, &name); + gp_list_get_name (list, 0, &name); gtk_entry_set_text (chooser->priv->entry_model, name); gtk_entry_set_text (chooser->priv->entry_port, "Universal Serial Bus (usb:)"); @@ -461,6 +462,7 @@ gtk_widget_show (d); break; } + gp_list_unref (list); gtk_object_destroy (GTK_OBJECT (status)); } diff -ur gtkam-0.1.12.old/src/gtkam-delete.c gtkam-0.1.12/src/gtkam-delete.c --- gtkam-0.1.12.old/src/gtkam-delete.c 2007-07-28 17:47:47.000000000 +0900 +++ gtkam-0.1.12/src/gtkam-delete.c 2007-07-28 17:46:58.000000000 +0900 @@ -179,7 +179,8 @@ gtk_widget_show (s); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (delete)->vbox), s, FALSE, FALSE, 0); - r1 = gp_camera_folder_list_files (camera->camera, folder, &l1, NULL); + gp_list_new (&l1); + r1 = gp_camera_folder_list_files (camera->camera, folder, l1, NULL); result = gp_camera_folder_delete_all (camera->camera, folder, GTKAM_STATUS (s)->context->context); switch (result) { @@ -200,13 +201,14 @@ gtk_widget_show (d); gtk_object_destroy (GTK_OBJECT (s)); + gp_list_new (&l2); /* See what files have been deleted */ r2 = gp_camera_folder_list_files (camera->camera, folder, - &l2, NULL); + l2, NULL); if ((r1 == GP_OK) && (r2 == GP_OK)) { - for (r1 = 0; r1 < gp_list_count (&l1); r1++) { - gp_list_get_name (&l1, r1, &name); - if (gp_list_lookup_name (&l2, name) >= 0) { + for (r1 = 0; r1 < gp_list_count (l1); r1++) { + gp_list_get_name (l1, r1, &name); + if (gp_list_lookup_name (l2, name) >= 0) { fdd.camera = camera; fdd.folder = folder; fdd.name = name; @@ -216,8 +218,10 @@ } } } + gp_list_unref (l2); return (FALSE); } + gp_list_unref (l1); } static gboolean diff -ur gtkam-0.1.12.old/src/gtkam-list.c gtkam-0.1.12/src/gtkam-list.c --- gtkam-0.1.12.old/src/gtkam-list.c 2007-07-28 17:47:47.000000000 +0900 +++ gtkam-0.1.12/src/gtkam-list.c 2007-07-28 17:45:24.000000000 +0900 @@ -994,7 +994,8 @@ s = gtkam_status_new (_("Listing files in folder '%s'..."), folder); g_signal_emit (G_OBJECT (list), signals[NEW_STATUS], 0, s); - result = gp_camera_folder_list_files (camera->camera, folder, &flist, + gp_list_new (&flist); + result = gp_camera_folder_list_files (camera->camera, folder, flist, GTKAM_STATUS (s)->context->context); switch (result) { case GP_OK: @@ -1016,13 +1017,14 @@ } gtk_object_destroy (GTK_OBJECT (s)); - for (i = 0; i < gp_list_count (&flist); i++) { - gp_list_get_name (&flist, i, &name); + for (i = 0; i < gp_list_count (flist); i++) { + gp_list_get_name (flist, i, &name); gtk_list_store_append (list->priv->store, &iter); gtk_list_store_set (list->priv->store, &iter, NAME_COLUMN, name, FOLDER_COLUMN, folder, CAMERA_COLUMN, camera, IS_EDITABLE_COLUMN, TRUE, -1); } + gp_list_unref (flist); if (camera->multi) gp_camera_exit (camera->camera, NULL);