Bug 408574 - delting softBody attached to stick causes crash
Summary: delting softBody attached to stick causes crash
Status: RESOLVED FIXED
Alias: None
Product: step
Classification: Applications
Component: stepcore (show other bugs)
Version: 0.1.0
Platform: Arch Linux Linux
: NOR crash
Target Milestone: ---
Assignee: Vladimir Kuznetsov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-06-11 15:39 UTC by larstuchtenhagen
Modified: 2021-12-09 16:10 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description larstuchtenhagen 2019-06-11 15:39:44 UTC
SUMMARY
I created the default soft body.
I attached a stick to the top right corner (works with any particle I tested).
I selected the soft body in the 'world' panel (also works when selecting via click&drag in simulation).
I pressed the 'delete' key (r-click -> delete also works).
Step crashed.

Reproduces reliably for me.
Does NOT occur when deleting stick and soft body at the same time. (Selecting both, the delete)
I did not start the simulation.
From the Console Output it appears to be a failed bounds-assertion in 'Eigen'.

STEPS TO REPRODUCE
1. create (default) soft body
2. attach stick
3. delete soft body

OBSERVED RESULT
crash

EXPECTED RESULT
not a crash, removal of soft-body

SOFTWARE/OS VERSIONS
Operating System: Arch Linux 
KDE Plasma Version: 5.15.5
KDE Frameworks Version: 5.59.0
Qt Version: 5.12.3
Kernel Version: 5.1.8-arch1-1-ARCH
OS Type: 64-bit

ADDITIONAL INFORMATION

[console output after backtace]

BACKTRACE:

Application: Step (step), signal: Aborted
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f93aef2e600 (LWP 11922))]

Thread 6 (Thread 0x7f93978b7700 (LWP 11933)):
#0  0x00007f93b1f40fa6 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f93b50ba899 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () from /usr/lib/libQt5Core.so.5
#2  0x00007f93b50ba9d8 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#3  0x00007f93b50b7eab in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007f93b50b463c in ?? () from /usr/lib/libQt5Core.so.5
#5  0x00007f93b1f3aa92 in start_thread () from /usr/lib/libpthread.so.0
#6  0x00007f93b4c3bcd3 in clone () from /usr/lib/libc.so.6

Thread 5 (Thread 0x7f93a4844700 (LWP 11928)):
#0  0x00007f93b1f40bac in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f93a4e33304 in ?? () from /usr/lib/dri/i965_dri.so
#2  0x00007f93a4e33028 in ?? () from /usr/lib/dri/i965_dri.so
#3  0x00007f93b1f3aa92 in start_thread () from /usr/lib/libpthread.so.0
#4  0x00007f93b4c3bcd3 in clone () from /usr/lib/libc.so.6

Thread 4 (Thread 0x7f93a6dee700 (LWP 11927)):
#0  0x00007f93b1f40bac in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f93b50ba91c in QWaitCondition::wait(QMutex*, QDeadlineTimer) () from /usr/lib/libQt5Core.so.5
#2  0x00007f93b50baa0a in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#3  0x00005616935104ec in SimulationThread::run (this=0x5616957205b0) at /usr/src/debug/step-19.04.2/step/simulationthread.cc:29
#4  0x00007f93b50b463c in ?? () from /usr/lib/libQt5Core.so.5
#5  0x00007f93b1f3aa92 in start_thread () from /usr/lib/libpthread.so.0
#6  0x00007f93b4c3bcd3 in clone () from /usr/lib/libc.so.6

Thread 3 (Thread 0x7f93a7fff700 (LWP 11924)):
#0  0x00007f93b14dfc17 in ?? () from /usr/lib/libglib-2.0.so.0
#1  0x00007f93b14dfd9f in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#2  0x00007f93b14e1766 in ?? () from /usr/lib/libglib-2.0.so.0
#3  0x00007f93b14e18ae in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#4  0x00007f93b52c4984 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#5  0x00007f93b526e4dc in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#6  0x00007f93b50b3239 in QThread::exec() () from /usr/lib/libQt5Core.so.5
#7  0x00007f93b3efdba6 in ?? () from /usr/lib/libQt5DBus.so.5
#8  0x00007f93b50b463c in ?? () from /usr/lib/libQt5Core.so.5
#9  0x00007f93b1f3aa92 in start_thread () from /usr/lib/libpthread.so.0
#10 0x00007f93b4c3bcd3 in clone () from /usr/lib/libc.so.6

Thread 2 (Thread 0x7f93addce700 (LWP 11923)):
#0  0x00007f93b4c310d1 in poll () from /usr/lib/libc.so.6
#1  0x00007f93b13e1630 in ?? () from /usr/lib/libxcb.so.1
#2  0x00007f93b13e32db in xcb_wait_for_event () from /usr/lib/libxcb.so.1
#3  0x00007f93ae998b69 in ?? () from /usr/lib/libQt5XcbQpa.so.5
#4  0x00007f93b50b463c in ?? () from /usr/lib/libQt5Core.so.5
#5  0x00007f93b1f3aa92 in start_thread () from /usr/lib/libpthread.so.0
#6  0x00007f93b4c3bcd3 in clone () from /usr/lib/libc.so.6

Thread 1 (Thread 0x7f93aef2e600 (LWP 11922)):
[KCrash Handler]
#6  0x00007f93b4b7882f in raise () from /usr/lib/libc.so.6
#7  0x00007f93b4b63672 in abort () from /usr/lib/libc.so.6
#8  0x00007f93b4b63548 in __assert_fail_base.cold.0 () from /usr/lib/libc.so.6
#9  0x00007f93b4b70db6 in __assert_fail () from /usr/lib/libc.so.6
#10 0x0000561693563bfa in Eigen::SparseMatrix<double, 1, int>::coeffRef (this=<optimized out>, row=<optimized out>, col=<optimized out>) at /usr/include/eigen3/Eigen/src/SparseCore/CompressedStorage.h:118
#11 0x000056169355b495 in StepCore::Stick::getConstraintsInfo (this=0x7f93a8009060, info=0x5616958babb8, offset=0) at /usr/src/debug/step-19.04.2/stepcore/body.h:98
#12 0x000056169351981a in StepCore::World::gatherJointsInfo (this=this@entry=0x5616958baac0, info=info@entry=0x5616958babb8) at /usr/src/debug/step-19.04.2/stepcore/world.cc:461
#13 0x00005616935199b8 in StepCore::World::solverFunction (fvar=<optimized out>, f=0x0, yvar=<optimized out>, y=<optimized out>, t=<optimized out>, this=0x5616958baac0) at /usr/src/debug/step-19.04.2/stepcore/world.cc:643
#14 StepCore::World::solverFunction (t=<optimized out>, y=<optimized out>, yvar=<optimized out>, f=0x0, fvar=<optimized out>, params=0x5616958baac0) at /usr/src/debug/step-19.04.2/stepcore/world.cc:690
#15 0x00005616934c07e2 in WorldModel::doEmitChanged (this=0x5616954e3a50) at /usr/src/debug/step-19.04.2/step/worldmodel.cc:402
#16 0x00007f93b529a31b in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#17 0x00007f93b52a6288 in QTimer::timeout(QTimer::QPrivateSignal) () from /usr/lib/libQt5Core.so.5
#18 0x00007f93b529aa3b in QObject::event(QEvent*) () from /usr/lib/libQt5Core.so.5
#19 0x00007f93b5c3cda4 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#20 0x00007f93b5c443c1 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#21 0x00007f93b526f849 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#22 0x00007f93b52c3d15 in QTimerInfoList::activateTimers() () from /usr/lib/libQt5Core.so.5
#23 0x00007f93b52c45a2 in ?? () from /usr/lib/libQt5Core.so.5
#24 0x00007f93b14df90f in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#25 0x00007f93b14e1869 in ?? () from /usr/lib/libglib-2.0.so.0
#26 0x00007f93b14e18ae in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#27 0x00007f93b52c4969 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#28 0x00007f93b526e4dc in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#29 0x00007f93b5276596 in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#30 0x00005616934a33b3 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/step-19.04.2/step/main.cc:100
[Inferior 1 (process 11922) detached]

------------------------------------------------
CONSOLE:

0 ms ==> step
step: /usr/include/eigen3/Eigen/src/SparseCore/SparseMatrix.h:208: Eigen::SparseMatrix<_Scalar, _Flags, _StorageIndex>::Scalar& Eigen::SparseMatrix<_Scalar, _Flags, _StorageIndex>::coeffRef(Eigen::Index, Eigen::Index) [with _Scalar = double; int _Options = 1; _StorageIndex = int; Eigen::SparseMatrix<_Scalar, _Flags, _StorageIndex>::Scalar = double; Eigen::Index = long int]: Assertion `row>=0 && row<rows() && col>=0 && col<cols()' failed.
KCrash: crashing... crashRecursionCounter = 2
KCrash: Application Name = step path = /usr/bin pid = 11922
KCrash: Arguments: /usr/bin/step 
KCrash: Attempting to start /usr/lib/drkonqi from kdeinit
sock_file=/run/user/1000/kdeinit5__0
Job 1, 'step' has stopped
16043 ms ==> QSocketNotifier: Invalid socket 8 and type 'Read', disabling...
QSocketNotifier: Invalid socket 12 and type 'Read', disabling...

[the programm did return 0]
Comment 1 Albert Astals Cid 2019-08-21 17:18:13 UTC
Git commit 614fc9ab1bbaa64cb16b5f52b948cb0c651db6a6 by Albert Astals Cid.
Committed on 21/08/2019 at 17:18.
Pushed by aacid into branch 'Applications/19.08'.

Fix crash when deleting a SoftBody

Summary:
A SoftBody is a group and deleting it failed to update the properties of
items that are not connected to it but to any of its subitems.

Reviewers: yurchor

Reviewed By: yurchor

Subscribers: yurchor, kde-edu

Tags: #kde_edu

Differential Revision: https://phabricator.kde.org/D23311

M  +22   -9    step/worldmodel.cc
M  +2    -0    stepcore/itemgroup.h

https://commits.kde.org/step/614fc9ab1bbaa64cb16b5f52b948cb0c651db6a6
Comment 2 Albert Astals Cid 2021-12-09 16:10:34 UTC
Git commit 7c9dc79bc01da47ef69071b08d9d72d76399ae61 by Albert Astals Cid.
Committed on 21/08/2019 at 17:17.
Pushed by aacid into branch 'arcpatch-D23311'.

Fix crash when deleting a SoftBody

Summary:
A SoftBody is a group and deleting it failed to update the properties of
items that are not connected to it but to any of its subitems.

Reviewers: yurchor

Reviewed By: yurchor

Subscribers: yurchor, kde-edu

Tags: #kde_edu

Differential Revision: https://phabricator.kde.org/D23311

M  +22   -9    step/worldmodel.cc
M  +2    -0    stepcore/itemgroup.h

https://invent.kde.org/education/step/commit/7c9dc79bc01da47ef69071b08d9d72d76399ae61