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 416255 - aisleriot crashes by double-clicking
aisleriot crashes by double-clicking
Status: RESOLVED FIXED
Product: gnome-games-superseded
Classification: Deprecated
Component: general
2.16.x
Other Linux
: Normal critical
: gnome-2-20
Assigned To: GNOME Games maintainers
GNOME Games maintainers
: 549245 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2007-03-08 22:34 UTC by Sebastien Bacher
Modified: 2012-01-31 23:29 UTC
See Also:
GNOME target: ---
GNOME version: 2.15/2.16


Attachments
immediate fix (479 bytes, patch)
2007-03-08 22:59 UTC, Vincent Povirk
committed Details | Review

Description Sebastien Bacher 2007-03-08 22:34:12 UTC
The bug has been opened on https://launchpad.net/bugs/88201

"Binary package hint: gnome-games

In AisleRiot Solitaire, the Plait game can be crashed by rapidly double-clicking the waste pile. This requires free space on the desk in which to place those cards, but is easily reproducible provided you can get close to the end of the game.

I first noticed this bug in Dapper on an old laptop, but have upgraded to a new laptop and installed Edgy. The problem still exists. I'm attaching the generated bug report.

http://librarian.launchpad.net/6544294/aisleriot-bugreport.txt
bug report

Memory status: size: 61255680 vsize: 0 resident: 61255680 share: 0 rss: 20406272 rss_rlim: 0
CPU usage: start_time: 1172532984 rtime: 0 utime: 423 stime: 0 cutime:386 cstime: 0 timeout: 37 it_real_value: 0 frequency: 0

Variation: Plait
Seed: 2491673963
Scheme error:
	(cdr Wrong type argument in position ~A: ~S (1 ()) #f)
Scheme tag:
	wrong-type-arg

Backtrace:
In unknown file:
   ?: 0* [button-double-clicked 9]
In /usr/share/sol-games/plait.scm:
 300: 1* (let ((dc-slots #)) (if (not #) (let # #) #f))
 303: 2  (if (not (home? source)) (let (#) (if valid-slot # #f)) #f)
   ...
 311: 3  (begin (add-cards! valid-slot (list (remove-card source))) #t)
 312: 4* [add-cards! 13 ...
 312: 5*  [list ...
 312: 6*   [remove-card 9]
In /usr/share/sol-games/sol.scm:
 226: 7    (let ((cards (get-cards slot-id))) (set-cards! slot-id (cdr cards)) ...)
 227: 8*   [set-cards! 9 ...
 227: 9*    [cdr ()]


Deck State:
	Slot 0
		(2 10 #f)
	Slot 1
		(Empty)
	Slot 2
		(1 8 #f)
	Slot 3
		(3 11 #f), (3 12 #f), (3 13 #f), (3 1 #f), (3 2 #f)
		(3 3 #f), (3 4 #f), (3 5 #f), (3 6 #f), (3 7 #f)
		(3 8 #f), (3 9 #f), (3 10 #f)
	Slot 4
		(3 11 #f), (3 12 #f), (3 13 #f)
	Slot 5
		(0 10 #f)
	Slot 6
		(3 7 #f)
	Slot 7
		(3 2 #f)
	Slot 8
		(0 6 #f)
	Slot 9
		(Empty)
	Slot 10
		(0 7 #t), (3 8 #t), (2 8 #t), (3 4 #t), (3 5 #t)
		(3 6 #t), (2 7 #t), (3 10 #t), (0 9 #t), (1 9 #t)
		(2 5 #t), (1 6 #t), (1 10 #t), (2 9 #t), (3 3 #t)
		(0 3 #t), (1 7 #t), (2 6 #t)
	Slot 11
		(0 11 #f), (0 12 #f), (0 13 #f), (0 1 #f), (0 2 #f)
		(0 3 #f), (0 4 #f), (0 5 #f), (0 6 #f), (0 7 #f)
		(0 8 #f), (0 9 #f), (0 10 #f)
	Slot 12
		(0 11 #f), (0 12 #f), (0 13 #f), (0 1 #f), (0 2 #f)
	Slot 13
		(Empty)
	Slot 14
		(0 8 #f)
	Slot 15
		(0 4 #f)
	Slot 16
		(0 5 #f)
	Slot 17
		(2 11 #f), (2 12 #f), (2 13 #f), (2 1 #f), (2 2 #f)
		(2 3 #f), (2 4 #f), (2 5 #f), (2 6 #f), (2 7 #f)
		(2 8 #f), (2 9 #f), (2 10 #f)
	Slot 18
		(2 11 #f), (2 12 #f), (2 13 #f), (2 1 #f), (2 2 #f)
		(2 3 #f), (2 4 #f)
	Slot 19
		(3 1 #f)
	Slot 20
		(3 9 #f)
	Slot 21
		(1 11 #f), (1 12 #f), (1 13 #f), (1 1 #f), (1 2 #f)
		(1 3 #f), (1 4 #f), (1 5 #f), (1 6 #f), (1 7 #f)
		(1 8 #f), (1 9 #f), (1 10 #f)
	Slot 22
		(1 11 #f), (1 12 #f), (1 13 #f), (1 1 #f), (1 2 #f)
		(1 3 #f), (1 4 #f), (1 5 #f)
Backtrace was generated from '/usr/libexec/aisleriot'

(no debugging symbols found)
Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread -1225775440 (LWP 13711)]
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
0xffffe410 in __kernel_vsyscall ()

Thread 1 (Thread -1225775440 (LWP 13711))

  • #0 __kernel_vsyscall
  • #1 waitpid
    from /lib/tls/i686/cmov/libc.so.6
  • #2 strtold_l
    from /lib/tls/i686/cmov/libc.so.6
  • #3 system
    from /lib/tls/i686/cmov/libpthread.so.0
  • #4 cscmi_drag_valid
  • #5 scm_internal_catch
    from /usr/lib/libguile.so.12
  • #6 scm_internal_stack_catch
    from /usr/lib/libguile.so.12
  • #7 cscmi_button_double_clicked_lambda
  • #8 button_press_event
  • #9 _gtk_marshal_BOOLEAN__BOXED
    from /usr/lib/libgtk-x11-2.0.so.0
  • #10 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #11 g_signal_chain_from_overridden
    from /usr/lib/libgobject-2.0.so.0
  • #12 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #13 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #14 gtk_widget_get_default_style
    from /usr/lib/libgtk-x11-2.0.so.0
  • #15 gtk_propagate_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #16 gtk_main_do_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #17 _gdk_events_init
    from /usr/lib/libgdk-x11-2.0.so.0
  • #18 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #19 g_main_context_check
    from /usr/lib/libglib-2.0.so.0
  • #20 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #21 gtk_main
    from /usr/lib/libgtk-x11-2.0.so.0
  • #22 new_game
  • #23 scm_boot_guile
    from /usr/lib/libguile.so.12
  • #24 main
  • #0 __kernel_vsyscall

Here is the bug report... it said it couldn't sync directly to bugzilla."
Comment 1 Vincent Povirk 2007-03-08 22:59:57 UTC
Created attachment 84284 [details] [review]
immediate fix

I was able to reproduce this by freeing a slot in the Plait early in the game and double-clicking the waste while it was still empty.

Apparently button-double-clicked doesn't check if the source slot is empty before trying to remove a card from it.

Here's a patch for the immediate problem, but this way of fixing it seems awkward to me (all of plait.scm seems awkward to me), and I'm.. well... vaguely anxious.. about this.
Comment 2 Andreas Røsdal 2007-03-09 17:06:03 UTC
Thanks for the bug report and solution to solve the problem. I would like to delay committing this until gnome-games version 2.18.1, because of the current code freeze. While any crash is unacceptable in theory, this crash should not happen often, and therefore it is IMHO safe to delay it until after the code freeze. This is of course unless someone on the release team sees this, and gives the necessary "blessing".
Comment 3 Vincent Povirk 2007-03-09 17:32:53 UTC
I think delaying it is the right thing, since I'm not totally confident in this solution.
Comment 4 Micah 2007-03-15 03:33:20 UTC
I'm fine with waiting for the code freeze to end, but this actually hits me pretty often when I play Plait.

I'm probably the only one in the world who plays it, but I just think it's a brilliant solitaire game.
Comment 5 Andreas Røsdal 2007-03-20 18:41:55 UTC
Thanks for the patch, Vincent. The patch has been applied to SVN trunk.

I will backport this to the 2.18.x stable branch, once it has been 
tested enough in the trunk branch. ..since you are vaguely
anxious.. about this  :)
Comment 6 Christian Persch 2008-08-25 10:24:15 UTC
*** Bug 549245 has been marked as a duplicate of this bug. ***
Comment 7 Robert Ancell 2012-01-31 23:29:32 UTC
This bug is being reassigned to the "general" component so we can close the aisleriot bugzilla component.  Apologies for the mass email!