Bug 397817 - kpat crash when switching games
Summary: kpat crash when switching games
Status: RESOLVED WORKSFORME
Alias: None
Product: kpat
Classification: Applications
Component: general (show other bugs)
Version: 3.6
Platform: Neon Linux
: NOR crash
Target Milestone: ---
Assignee: Fabian
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2018-08-24 07:17 UTC by S. Christian Collins
Modified: 2022-10-02 05:33 UTC (History)
8 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
video showing the crash (1.39 MB, video/mp4)
2018-08-29 15:48 UTC, S. Christian Collins
Details
The game should terminate by itself. I had to click on 5 cards before the end (11.31 KB, application/vnd.kde.kpatience.savedgame)
2018-09-02 10:05 UTC, Jean-Pierre Cabanié
Details
Solver hangs for a while in Freecell (7.22 KB, application/vnd.kde.kpatience.savedgame)
2018-09-02 10:39 UTC, Jean-Pierre Cabanié
Details
Freecell freezes (5.00 KB, application/vnd.kde.kpatience.savedgame)
2018-09-02 12:08 UTC, Jean-Pierre Cabanié
Details
Stacktrace in journalctl system log (8.10 KB, text/plain)
2019-04-16 21:59 UTC, Duncan Kinnear
Details
New crash information added by DrKonqi (6.62 KB, text/plain)
2019-08-28 10:56 UTC, Vladimir Olteanu
Details

Note You need to log in before you can comment on or make changes to this bug.
Description S. Christian Collins 2018-08-24 07:17:11 UTC
Application: kpat (3.6)

Qt Version: 5.11.1
Frameworks Version: 5.49.0
Operating System: Linux 4.15.0-32-generic x86_64
Distribution: KDE neon User Edition 5.13

-- Information about the crash:
The following events led to the crash:
1. Won a game of Freecell in kpat.
2. Clicked the "New Game" button and chose to start a game of Spider.
Result: kpat crashed right after I clicked the tile for the Spider game. I haven't tried to repro this yet.

-- Backtrace:
Application: KPatience (kpat), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f93c7db48c0 (LWP 4526))]

Thread 4 (Thread 0x7f939efb7700 (LWP 4530)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f93a8e7670b in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#2  0x00007f93a8e76427 in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#3  0x00007f93beff76ba in start_thread (arg=0x7f939efb7700) at pthread_create.c:333
#4  0x00007f93c346f41d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 3 (Thread 0x7f939ff37700 (LWP 4529)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f93a8e7670b in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#2  0x00007f93a8e76427 in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#3  0x00007f93beff76ba in start_thread (arg=0x7f939ff37700) at pthread_create.c:333
#4  0x00007f93c346f41d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7f93ab087700 (LWP 4528)):
#0  0x00007f93bd5fea94 in g_mutex_unlock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1  0x00007f93bd5b938e in g_main_context_acquire () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f93bd5ba245 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f93bd5ba49c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f93c40970bb in QEventDispatcherGlib::processEvents (this=0x7f93a40008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:425
#5  0x00007f93c403e5ba in QEventLoop::exec (this=this@entry=0x7f93ab086cc0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:214
#6  0x00007f93c3e735e4 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:525
#7  0x00007f93bfd45f35 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#8  0x00007f93c3e7e727 in QThreadPrivate::start (arg=0x7f93bffbed60) at thread/qthread_unix.cpp:367
#9  0x00007f93beff76ba in start_thread (arg=0x7f93ab087700) at pthread_create.c:333
#10 0x00007f93c346f41d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7f93c7db48c0 (LWP 4526)):
[KCrash Handler]
#6  MemoryManager::new_from_block (this=0xdc0300, s=56) at /workspace/build/patsolve/memory.cpp:165
#7  0x000000000044fc77 in Solver<15ul>::pack_position (this=this@entry=0xe5fed0) at /workspace/build/patsolve/patsolve.cpp:219
#8  0x00000000004500fe in Solver<15ul>::insert (this=this@entry=0xe5fed0, cluster=cluster@entry=0x7ffdf86b497c, d=0, node=node@entry=0x7ffdf86b4980) at /workspace/build/patsolve/patsolve.cpp:890
#9  0x00000000004501c8 in Solver<15ul>::new_position (this=this@entry=0xe5fed0, parent=parent@entry=0x0, m=m@entry=0x7ffdf86b49c0) at /workspace/build/patsolve/patsolve.cpp:922
#10 0x0000000000454f1e in Solver<15ul>::doit (this=0xe5fed0) at /workspace/build/patsolve/patsolve.cpp:508
#11 0x0000000000454fb7 in Solver<15ul>::patsolve (this=0xe5fed0, _max_positions=<optimized out>) at /workspace/build/patsolve/patsolve.cpp:803
#12 0x000000000042240e in DealerScene::isGameLost (this=0xc8c0f0) at /workspace/build/dealer.cpp:1737
#13 0x000000000042ab30 in DealerScene::takeState (this=this@entry=0xc8c0f0) at /workspace/build/dealer.cpp:1328
#14 0x000000000042e5f4 in DealerScene::animationDone (this=0xc8c0f0) at /workspace/build/dealer.cpp:1544
#15 0x00007f93c406d2a6 in QtPrivate::QSlotObjectBase::call (a=0x7ffdf86b4c70, r=0xc8c0f0, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:376
#16 QMetaObject::activate (sender=0xc8c0f0, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3754
#17 0x00007f93c406d2a6 in QtPrivate::QSlotObjectBase::call (a=0x7ffdf86b4d80, r=0xc8c0f0, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:376
#18 QMetaObject::activate (sender=0xea7000, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3754
#19 0x00007f93c406d2a6 in QtPrivate::QSlotObjectBase::call (a=0x7ffdf86b4ee0, r=0xf421e0, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:376
#20 QMetaObject::activate (sender=sender@entry=0xccb600, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffdf86b4ee0) at kernel/qobject.cpp:3754
#21 0x00007f93c406d887 in QMetaObject::activate (sender=sender@entry=0xccb600, m=m@entry=0x7f93c44c1da0 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffdf86b4ee0) at kernel/qobject.cpp:3633
#22 0x00007f93c4079b07 in QTimer::timeout (this=this@entry=0xccb600, _t1=...) at .moc/moc_qtimer.cpp:200
#23 0x00007f93c4079e08 in QTimer::timerEvent (this=0xccb600, e=<optimized out>) at kernel/qtimer.cpp:255
#24 0x00007f93c406df73 in QObject::event (this=0xccb600, e=<optimized out>) at kernel/qobject.cpp:1273
#25 0x00007f93c54da39c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0xccb600, e=0x7ffdf86b51d0) at kernel/qapplication.cpp:3727
#26 0x00007f93c54e1ab0 in QApplication::notify (this=0x7ffdf86b55e0, receiver=0xccb600, e=0x7ffdf86b51d0) at kernel/qapplication.cpp:3486
#27 0x00007f93c4040228 in QCoreApplication::notifyInternal2 (receiver=0xccb600, event=event@entry=0x7ffdf86b51d0) at kernel/qcoreapplication.cpp:1048
#28 0x00007f93c409647e in QCoreApplication::sendEvent (event=0x7ffdf86b51d0, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234
#29 QTimerInfoList::activateTimers (this=0xb82f10) at kernel/qtimerinfo_unix.cpp:643
#30 0x00007f93c4096d01 in timerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:182
#31 0x00007f93bd5ba197 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007f93bd5ba3f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007f93bd5ba49c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#34 0x00007f93c409709f in QEventDispatcherGlib::processEvents (this=this@entry=0xb54400, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#35 0x00007f93b5d9d9a1 in QPAEventDispatcherGlib::processEvents (this=0xb54400, flags=...) at qeventdispatcher_glib.cpp:69
#36 0x00007f93c403e5ba in QEventLoop::exec (this=this@entry=0x7ffdf86b5440, flags=..., flags@entry=...) at kernel/qeventloop.cpp:214
#37 0x00007f93c40476c4 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1336
#38 0x00007f93c483ff8c in QGuiApplication::exec () at kernel/qguiapplication.cpp:1762
#39 0x00007f93c54da2f5 in QApplication::exec () at kernel/qapplication.cpp:2901
#40 0x000000000041e5c0 in main (argc=1, argv=<optimized out>) at /workspace/build/main.cpp:337

Reported using DrKonqi
Comment 1 Albert Astals Cid 2018-08-26 23:13:12 UTC
Fabian, is this related to the memory changes you did?
Comment 2 S. Christian Collins 2018-08-27 00:52:55 UTC
I have discovered that I can repro this crash every time I win a Freecell game and then start a game of Spider afterward.
Comment 3 Fabian 2018-08-29 13:37:01 UTC
@Albert: Hm, I haven't merged the large memory related change into the code, so that shouldn't be it. It might however be the result of one of the other changes I did, I'll investigate it
@S. Christian Collins: Thanks for reporting the bug. Unfortunately, I cannot reproduce the crash locally so far. Does it crash directly after you open the Spider game?
Comment 4 Fabian 2018-08-29 13:57:05 UTC
@S. Christian Collins: Just an idea: Is Neon still using the kpat version from KDE applications 18.04? In that case it's a known issue, which is already fixed thanks to the new Freecell Solver.
Comment 5 S. Christian Collins 2018-08-29 15:00:27 UTC
Kpat crashes instantly once the Spider cards are dealt out. The package version for kpat is 4:18.08.0-0xneon+16.04+xenial+build46.
Comment 6 S. Christian Collins 2018-08-29 15:12:00 UTC
Also, to get the crash, you have to win the Freecell game. The crash doesn't happen if you only play the game partway through and then switch to Spider.
Comment 7 Fabian 2018-08-29 15:34:42 UTC
Could you tell me which Spider options you are using (Face Down/Face Up, number of suits)?
Comment 8 S. Christian Collins 2018-08-29 15:48:58 UTC
Created attachment 114687 [details]
video showing the crash
Comment 9 S. Christian Collins 2018-08-29 15:51:47 UTC
Spider options: 2 suits, face down
Also: autodrop, solver, "remember state on exit" are all enabled.

I also don't know how long this bug has been a part of kpat, since I've only recently started playing Freecell.
Comment 10 Albert Astals Cid 2018-08-29 17:16:57 UTC
answers have been given
Comment 11 Jean-Pierre Cabanié 2018-09-02 09:22:57 UTC
I get the same problem on an Arch Linux distribution. It seems that from time to time, the solver thread becomes crazy : it runs for hours without displaying you may win the game or this game is lost or ... while the CPU for one processor reaches 100%. The automatic removal of cards stops without any «visible» reason and trying to switch to Klondike for example after having won a game leads ti the display of the cards and then a crash in the application.
Feel free to contact me if you want/need some more input.
Thanks for the good work.
Jean-Pierre
Comment 12 Fabian 2018-09-02 09:40:45 UTC
@ Jean-Pierre Cabanié:

Does the solver thread becomes stuck in all games, or only in certain ones? And if you can reproduce the issues, could you save the game (File > Save as) and attach the saved game to the bug?
Comment 13 Jean-Pierre Cabanié 2018-09-02 10:05:25 UTC
Created attachment 114739 [details]
The game should terminate by itself. I had to click on 5 cards before the end
Comment 14 Jean-Pierre Cabanié 2018-09-02 10:39:42 UTC
Created attachment 114740 [details]
Solver hangs for a while in Freecell

Move the 4 of Hearts on the 5 of Spades and then try to move the Queen of hearts on the King of Clubs. You have to wait for a while before the move is obeyed. (the CPU is quite stressed probably by the solver).
Comment 15 Jean-Pierre Cabanié 2018-09-02 12:08:52 UTC
Created attachment 114742 [details]
Freecell freezes

That time when I tried to move the 3 of clubs on the 4 or hearts, It took a while with one CPU eaten up to 100%. I've not tried to hit Ctrl-z twice before recording the game.
Hope this helps
Jean-Pierre
Comment 16 Duncan Kinnear 2019-04-16 02:57:32 UTC
This crash also happens every time I finish Freecell and then start a Forty & Eight game. Crashes after the cards have been dealt.
So it seems like it's an issue with finishing Freecell, not starting Spider.
Comment 17 Duncan Kinnear 2019-04-16 21:59:41 UTC
Created attachment 119451 [details]
Stacktrace in journalctl system log

If it helps, this was the stack trace in the system log for a crash today when switching from a completed Simple Simon to a new Yukon game.
Comment 18 Brian Kaye 2019-06-14 20:54:57 UTC
I have this problem almost every time when switching from a win on Freecell to another game. 

I am running Fedora 29 with all the latest patches.
Comment 19 Vladimir Olteanu 2019-08-28 10:56:29 UTC
Created attachment 122400 [details]
New crash information added by DrKonqi

kpat (3.6) using Qt 5.13.0

- What I was doing when the application crashed:

1. Won a game of FreeCell (not necessarily on 1st try)
2. Started a game of Spider

The app crashed right after the cards were dealt.

-- Backtrace (Reduced):
#6  MemoryManager::new_from_block (this=0x55bb9d28f000, s=56) at /usr/src/debug/kpat-19.08.0-lp151.1.1.x86_64/patsolve/memory.cpp:164
#7  0x000055bb9cc48eb7 in Solver<15ul>::pack_position (this=this@entry=0x55bb9d99b0a0) at /usr/src/debug/kpat-19.08.0-lp151.1.1.x86_64/patsolve/patsolve.cpp:217
#8  0x000055bb9cc4934a in Solver<15ul>::insert (this=this@entry=0x55bb9d99b0a0, cluster=cluster@entry=0x7ffd2d5cae3c, d=0, node=node@entry=0x7ffd2d5cae40) at /usr/src/debug/kpat-19.08.0-lp151.1.1.x86_64/patsolve/patsolve.cpp:887
#9  0x000055bb9cc4942a in Solver<15ul>::new_position (this=this@entry=0x55bb9d99b0a0, parent=parent@entry=0x0, m=m@entry=0x7ffd2d5cae80) at /usr/src/debug/kpat-19.08.0-lp151.1.1.x86_64/patsolve/patsolve.cpp:919
#10 0x000055bb9cc4e4a6 in Solver<15ul>::doit (this=0x55bb9d99b0a0) at /usr/src/debug/kpat-19.08.0-lp151.1.1.x86_64/patsolve/patsolve.cpp:505
Comment 20 Brian Kaye 2019-08-28 14:25:52 UTC
Mine crashes before the cards are dealt in the new game 99.99...% of the time.
Comment 21 Thierry 2019-12-29 22:36:40 UTC
After a part of freecell. Closing the game and : 

journalctl -f
Error detected in cache, re-generating
Comment 22 Brian Kaye 2019-12-31 00:56:32 UTC
Correction to comment 20. Should be 'after' the cards are dealt. Occasionally it will just quit when kpat first started. Usually does not matter the order of games. Most of the time freecell to another game crashes. Rarely does not crash first time after Freecell.
Comment 23 Justin Zobel 2022-09-30 04:37:52 UTC
Thank you for reporting this crash in KDE software. As it has been a while since this issue was reported, can we please ask you to see if you can reproduce the crash with a recent software version?

If you can reproduce the issue, please change the status to "CONFIRMED" when replying. Thank you!
Comment 24 S. Christian Collins 2022-10-01 02:00:32 UTC
I can no longer reproduce this bug with the current version of kpat (4:22.08.1-0xneon+22.04+jammy+release+build7).
Comment 25 Brian Kaye 2022-10-01 14:58:06 UTC
On Fedora the latest supplied is kpat-22.04.1-1.fc36.x86_64 and the problem does occur in that version.
Comment 26 Albert Astals Cid 2022-10-02 05:33:25 UTC
Brian you're on an older version 22.04 as compared to 22.08.1 from the other reporter that says it doesn't happen for them anymore.

I'm going to close this as worksforme assuming we fixed in later versions. If/when you update to 22.08.1 and the crash still persists please reopen the issue.