D23404: Revamp solver memory management

Wolfgang Bauer <[email protected]>
Newsgroups gmane.comp.kde.devel.games
Message-ID <[email protected]>
wbauer added a comment.


  I gave it a try and it does seem to fix the crashes from BUG 395624 here.
  
  I did get another crash while playing Grandfather's Clock now though, no idea if it is related to this change or not.
  Thread 1 (Thread 0x7f655a167900 (LWP 11734)):
  [KCrash Handler]
  #6  MemoryManager<19>::BLOCK<TTree<19> >::getItem (this=<optimized out>) at /usr/src/debug/kpat5-19.08.0-lp151.105.1.x86_64/patsolve/memory.h:90
  #7  MemoryManager<19>::new_tree (this=<optimized out>) at /usr/src/debug/kpat5-19.08.0-lp151.105.1.x86_64/patsolve/memory.h:183
  #8  Solver<9ul>::pack_position (this=this@entry=0x55dd50a0bf10) at /usr/src/debug/kpat5-19.08.0-lp151.105.1.x86_64/patsolve/patsolve.cpp:209
  #9  0x000055dd4dfb4874 in Solver<9ul>::insert (this=this@entry=0x55dd50a0bf10, cluster=cluster@entry=0x7ffc8ac1b8cc, d=0, node=node@entry=0x7ffc8ac1b8d0) at /usr/src/debug/kpat5-19.08.0-lp151.105.1.x86_64/patsolve/patsolve.cpp:854
  #10 0x000055dd4dfb4a2e in Solver<9ul>::new_position (this=this@entry=0x55dd50a0bf10, parent=parent@entry=0x0, m=m@entry=0x7ffc8ac1b920) at /usr/src/debug/kpat5-19.08.0-lp151.105.1.x86_64/patsolve/patsolve.cpp:881
  #11 0x000055dd4dfc25b6 in Solver<9ul>::doit (this=0x55dd50a0bf10) at /usr/src/debug/kpat5-19.08.0-lp151.105.1.x86_64/patsolve/patsolve.cpp:472
  #12 0x000055dd4dfc2647 in Solver<9ul>::patsolve (this=0x55dd50a0bf10, _max_positions=<optimized out>) at /usr/src/debug/kpat5-19.08.0-lp151.105.1.x86_64/patsolve/patsolve.cpp:767
  #13 0x000055dd4df87a51 in DealerScene::isGameLost (this=0x55dd5051eb50) at /usr/src/debug/kpat5-19.08.0-lp151.105.1.x86_64/dealer.cpp:1722
  #14 0x000055dd4df8f0a6 in DealerScene::takeState (this=0x55dd5051eb50) at /usr/src/debug/kpat5-19.08.0-lp151.105.1.x86_64/dealer.cpp:1313
  #15 0x000055dd4df932fc in DealerScene::animationDone (this=0x55dd5051eb50) at /usr/src/debug/kpat5-19.08.0-lp151.105.1.x86_64/dealer.cpp:1529
  #16 0x00007f655635944f in QtPrivate::QSlotObjectBase::call (a=0x7ffc8ac1bba0, r=0x55dd5051eb50, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:394
  #17 QMetaObject::activate (sender=0x55dd5051eb50, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3787
  #18 0x00007f655635944f in QtPrivate::QSlotObjectBase::call (a=0x7ffc8ac1bca0, r=0x55dd5051eb50, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:394
  #19 QMetaObject::activate (sender=0x55dd504af590, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3787
  #20 0x00007f655635944f in QtPrivate::QSlotObjectBase::call (a=0x7ffc8ac1bdf0, r=0x55dd5048a970, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:394
  #21 QMetaObject::activate (sender=sender@entry=0x55dd504b13d0, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=<optimized out>, argv@entry=0x7ffc8ac1bdf0) at kernel/qobject.cpp:3787
  #22 0x00007f65563599f7 in QMetaObject::activate (sender=sender@entry=0x55dd504b13d0, m=m@entry=0x7f65567dfb60 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffc8ac1bdf0) at kernel/qobject.cpp:3658
  #23 0x00007f6556365ff7 in QTimer::timeout (this=this@entry=0x55dd504b13d0, _t1=...) at .moc/moc_qtimer.cpp:205
  #24 0x00007f6556366358 in QTimer::timerEvent (this=0x55dd504b13d0, e=<optimized out>) at kernel/qtimer.cpp:255
  #25 0x00007f6556359e4b in QObject::event (this=0x55dd504b13d0, e=<optimized out>) at kernel/qobject.cpp:1282
  #26 0x00007f655781dfac in QApplicationPrivate::notify_helper (this=this@entry=0x55dd502837d0, receiver=receiver@entry=0x55dd504b13d0, e=e@entry=0x7ffc8ac1c160) at kernel/qapplication.cpp:3740
  #27 0x00007f6557825520 in QApplication::notify (this=0x7ffc8ac1c500, receiver=0x55dd504b13d0, e=0x7ffc8ac1c160) at kernel/qapplication.cpp:3486
  #28 0x00007f6556328958 in QCoreApplication::notifyInternal2 (receiver=0x55dd504b13d0, event=0x7ffc8ac1c160) at kernel/qcoreapplication.cpp:1065
  #29 0x00007f65563859d9 in QTimerInfoList::activateTimers (this=0x55dd502eed80) at kernel/qtimerinfo_unix.cpp:643
  #30 0x00007f65563861d9 in timerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:183
  #31 idleTimerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:230
  #32 0x00007f654f395e87 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
  #33 0x00007f654f396230 in ?? () from /usr/lib64/libglib-2.0.so.0
  #34 0x00007f654f3962bc in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
  #35 0x00007f655638654f in QEventDispatcherGlib::processEvents (this=0x55dd50306160, flags=...) at kernel/qeventdispatcher_glib.cpp:423
  #36 0x00007f6556326b6a in QEventLoop::exec (this=this@entry=0x7ffc8ac1c3b0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:225
  #37 0x00007f655632fe30 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1373
  #38 0x000055dd4df82670 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kpat5-19.08.0-lp151.105.1.x86_64/main.cpp:346
  [Inferior 1 (process 11734) detached]

REPOSITORY
  R410 KPatience

REVISION DETAIL
  https://phabricator.kde.org/D23404

To: fabiank, #kde_games, aacid, shlomif
Cc: wbauer, kde-games-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.