GNOME Bugzilla – Bug 671110
When taking a photo, Cheese gets stuck after the countdown and no photo is taken
Last modified: 2012-03-21 16:38:00 UTC
Original report: https://bugs.launchpad.net/ubuntu/+source/cheese/+bug/942238 DistroRelease: Ubuntu 12.04 Package: cheese 3.3.90-0ubuntu1 "Today I noticed on my Precise laptop that when using Cheese to try to take a photo, it would countdown, then just get "stuck" when it is supposed to take the picture. It still shows video from the webcam, but all the buttons and most of the menu entries gray out and stay that way until Cheese is closed and restarted. Running cheese from a terminal shows the following error message after the countdown ends: ** CRITICAL **: cheese_main_window_finish_countdown_callback: assertion `self != NULL' failed Taking multiple photos in a burst causes Cheese to show multiple countdowns, but can still be interacted with normally. No pictures are actually taken here, either, but it doesn't end up stuck like it would with a single photo. Recording video still works perfectly."
I cannot reproduce this, and that assertion should never be false, as it is from a function internal to the MainWindow class. The only problem that I can imagine is a threading problem. Please provide a backtrace, breaking on cheese_main_window_finish_countdown_callback.
Backtrace (also available at https://launchpadlibrarian.net/95241753/gdb-cheese.txt): [New Thread 0xb0e42b40 (LWP 4591)] ** CRITICAL **: cheese_main_window_finish_countdown_callback: assertion `self != NULL' failed [New Thread 0xadd4ab40 (LWP 4592)] [New Thread 0xad549b40 (LWP 4593)] [New Thread 0xb02bbb40 (LWP 4597)] [New Thread 0xac9d7b40 (LWP 4598)] Program received signal SIGINT, Interrupt. 0xb4df6471 in ?? () from /usr/lib/fglrx/dri/fglrx_dri.so (gdb) backtrace full
+ Trace 229794
Seems to be a problem is in ATI drivers
My apologies, I've sent an incorrect backtrace. Here is the right one (from https://launchpadlibrarian.net/95302356/gdb-cheese.txt): Starting program: /usr/bin/cheese [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7fffe9252700 (LWP 5241)] [New Thread 0x7fffe8849700 (LWP 5242)] Gtk-WARNING **: Attempting to add a widget with type GtkImage to a GtkToggleButton, but as a GtkBin subclass a GtkToggleButton can only contain one widget at a time; it already contains a widget of type GtkLabel Gtk-WARNING **: Attempting to add a widget with type GtkImage to a GtkToggleButton, but as a GtkBin subclass a GtkToggleButton can only contain one widget at a time; it already contains a widget of type GtkLabel Gtk-WARNING **: Attempting to add a widget with type GtkImage to a GtkToggleButton, but as a GtkBin subclass a GtkToggleButton can only contain one widget at a time; it already contains a widget of type GtkLabel Gtk-WARNING **: Attempting to add a widget with type GtkImage to a GtkButton, but as a GtkBin subclass a GtkButton can only contain one widget at a time; it already contains a widget of type GtkLabel Gtk-WARNING **: Attempting to add a widget with type GtkGrid to a GtkToggleButton, but as a GtkBin subclass a GtkToggleButton can only contain one widget at a time; it already contains a widget of type GtkLabel Gtk-WARNING **: Attempting to add a widget with type GtkImage to a GtkButton, but as a GtkBin subclass a GtkButton can only contain one widget at a time; it already contains a widget of type GtkLabel [New Thread 0x7fffe28d7700 (LWP 5243)] ** CRITICAL **: cheese_main_window_finish_countdown_callback: assertion `self != NULL' failed [New Thread 0x7fffcffff700 (LWP 5244)] [New Thread 0x7fffcf7fe700 (LWP 5245)] Program received signal SIGINT, Interrupt. 0x00007ffff5051d93 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87 87 ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
+ Trace 229796
*** Bug 671782 has been marked as a duplicate of this bug. ***
David, i can reproduce it with source package from ubuntu. the fix is simple. Just remove all *.c file in src dir. rm src/*.c and compile it again. I think we should add it to "make clean"
my bad. "make maintainer-clean-generic" doing that.
I can confirm this big with ubuntu 12.04 amd64 and all latest updates.
From what I understand, this happens in the bug in Ubuntu package only. Since it is already reported in Ubuntu, I will close it. Feel free to reopen if needed.
Not an Ubuntu specific bug. It happens on F17 as well. The problem is bad code generated by vala.
Created attachment 210122 [details] [review] patch to avoid the problem
Comment on attachment 210122 [details] [review] patch to avoid the problem Matthias, thanks for finding the problem! I am not sure if this classifies as a ‘simple build fix’: http://live.gnome.org/ReleasePlanning/Freezes#Hard_Code_Freeze so should I ask for a freeze break?
asking can't hurt, since we're officially in 'hard code freeze' territory now - but I can't see anybody objecting to making cheese actually take photos...
On further investigation, the invalid code generation only occurs with Vala 0.15, and I created the Cheese 3.3.92 tarball with Vala 0.14.2, thus working around this problem for the moment. I will make the 3.4.0 release with Vala 0.14.2 as well, and then push the patch as an improved workaround.
(In reply to comment #9) > Not an Ubuntu specific bug. It happens on F17 as well. The problem is bad code > generated by vala. (In reply to comment #10) > Created an attachment (id=210122) [details] [review] > patch to avoid the problem Thanks for tracking this down. Moving bug to vala.
commit 7b14d21a881902e19f43efdeae1bfbf3b22db859 Author: Jürg Billeter <j@bitron.ch> Date: Wed Mar 21 17:31:04 2012 +0100 codegen: Fix delegate target C name for static fields Fixes bug 671110.