Bug 322814 - Unchecked preset options are remembered per-engine, not per-preset in the editor
Summary: Unchecked preset options are remembered per-engine, not per-preset in the editor
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: General (show other bugs)
Version: 2.8 Pre-Alpha
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
: 323381 (view as bug list)
Depends on:
Blocks:
 
Reported: 2013-07-25 12:41 UTC by Odysseas
Modified: 2014-01-04 12:25 UTC (History)
3 users (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 Odysseas 2013-07-25 12:41:23 UTC
Application: krita (2.8 Pre-Alpha)
KDE Platform Version: 4.10.5 (Compiled from sources)
Qt Version: 4.8.4
Operating System: Linux 3.8.0-26-generic x86_64
Distribution: Ubuntu 13.04

-- Information about the crash:
- What I was doing when the application crashed:
Accessing the brush creator. This occurs quite seldom and randomly, and doesn't seem to be related with what I am doing. Many times it happens when I just access the brush creator.


- Custom settings of the application:

opengl active
Autosave every 15 min

The crash can be reproduced sometimes.

-- Backtrace:
Application: Krita (kdeinit4), signal: Aborted
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f1ca4dfb7c0 (LWP 7751))]

Thread 7 (Thread 0x7f1c7dad9700 (LWP 7752)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f1ca397914b in wait (time=18446744073709551615, this=0x24b1bc0) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=0x24b1b70, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f1ca3975067 in QSemaphore::acquire (this=this@entry=0x24b18c0, n=n@entry=1) at thread/qsemaphore.cpp:144
#4  0x00007f1c86766434 in waitForWork (this=0x24b18b0) at /build/buildd/krita-testing-2+git20130719+r74129-41/krita/image/tiles3/kis_tile_data_pooler.cc:162
#5  KisTileDataPooler::run (this=0x24b18b0) at /build/buildd/krita-testing-2+git20130719+r74129-41/krita/image/tiles3/kis_tile_data_pooler.cc:184
#6  0x00007f1ca3978bec in QThreadPrivate::start (arg=0x24b18b0) at thread/qthread_unix.cpp:338
#7  0x00007f1c9fe8ef8e in start_thread (arg=0x7f1c7dad9700) at pthread_create.c:311
#8  0x00007f1ca267ee1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 6 (Thread 0x7f1c7d2d8700 (LWP 7753)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:238
#1  0x00007f1ca39777f6 in thread_sleep (ti=ti@entry=0x7f1c7d2d7dc0) at thread/qthread_unix.cpp:475
#2  0x00007f1ca397802d in QThread::msleep (msecs=msecs@entry=700) at thread/qthread_unix.cpp:501
#3  0x00007f1c8679412a in KisTileDataSwapper::run (this=0x24b18e8) at /build/buildd/krita-testing-2+git20130719+r74129-41/krita/image/tiles3/swap/kis_tile_data_swapper.cpp:97
#4  0x00007f1ca3978bec in QThreadPrivate::start (arg=0x24b18e8) at thread/qthread_unix.cpp:338
#5  0x00007f1c9fe8ef8e in start_thread (arg=0x7f1c7d2d8700) at pthread_create.c:311
#6  0x00007f1ca267ee1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 5 (Thread 0x7f1c59deb700 (LWP 7769)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f1ca397914b in wait (time=18446744073709551615, this=0x3a388e0) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=this@entry=0x3a38468, mutex=mutex@entry=0x3a38460, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f1ca330c636 in QFileInfoGatherer::run (this=0x3a38450) at dialogs/qfileinfogatherer.cpp:214
#4  0x00007f1ca3978bec in QThreadPrivate::start (arg=0x3a38450) at thread/qthread_unix.cpp:338
#5  0x00007f1c9fe8ef8e in start_thread (arg=0x7f1c59deb700) at pthread_create.c:311
#6  0x00007f1ca267ee1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 4 (Thread 0x7f1c77fff700 (LWP 7770)):
#0  0x00007f1ca2677233 in select () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f1ca3aa14f3 in qt_safe_select (nfds=23, fdread=0x7f1c6c36b958, fdwrite=0x7f1c6c36bbf0, fdexcept=0x7f1c6c36be88, orig_timeout=0x0) at kernel/qcore_unix.cpp:83
#2  0x00007f1ca3aa6499 in QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7f1c6c36b7a0, flags=..., timeout=0x0) at kernel/qeventdispatcher_unix.cpp:223
#3  0x00007f1ca3aa6c82 in QEventDispatcherUNIX::processEvents (this=0x7f1c6c0008f0, flags=...) at kernel/qeventdispatcher_unix.cpp:937
#4  0x00007f1ca3a7438f in QEventLoop::processEvents (this=this@entry=0x7f1c77ffed90, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f1ca3a74618 in QEventLoop::exec (this=this@entry=0x7f1c77ffed90, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f1ca3976410 in QThread::exec (this=this@entry=0x3a402f0) at thread/qthread.cpp:542
#7  0x00007f1ca3a55edf in QInotifyFileSystemWatcherEngine::run (this=0x3a402f0) at io/qfilesystemwatcher_inotify.cpp:256
#8  0x00007f1ca3978bec in QThreadPrivate::start (arg=0x3a402f0) at thread/qthread_unix.cpp:338
#9  0x00007f1c9fe8ef8e in start_thread (arg=0x7f1c77fff700) at pthread_create.c:311
#10 0x00007f1ca267ee1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 3 (Thread 0x7f1c768bb700 (LWP 7771)):
#0  0x00007f1ca2677233 in select () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f1ca3aa14f3 in qt_safe_select (nfds=29, fdread=0x7f1c64000ac8, fdwrite=0x7f1c64000d60, fdexcept=0x7f1c64000ff8, orig_timeout=0x0) at kernel/qcore_unix.cpp:83
#2  0x00007f1ca3aa6499 in QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7f1c64000910, flags=..., timeout=0x0) at kernel/qeventdispatcher_unix.cpp:223
#3  0x00007f1ca3aa6c82 in QEventDispatcherUNIX::processEvents (this=0x7f1c640008f0, flags=...) at kernel/qeventdispatcher_unix.cpp:937
#4  0x00007f1ca3a7438f in QEventLoop::processEvents (this=this@entry=0x7f1c768bad90, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f1ca3a74618 in QEventLoop::exec (this=this@entry=0x7f1c768bad90, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f1ca3976410 in QThread::exec (this=this@entry=0x3a38b80) at thread/qthread.cpp:542
#7  0x00007f1ca3a55edf in QInotifyFileSystemWatcherEngine::run (this=0x3a38b80) at io/qfilesystemwatcher_inotify.cpp:256
#8  0x00007f1ca3978bec in QThreadPrivate::start (arg=0x3a38b80) at thread/qthread_unix.cpp:338
#9  0x00007f1c9fe8ef8e in start_thread (arg=0x7f1c768bb700) at pthread_create.c:311
#10 0x00007f1ca267ee1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 2 (Thread 0x7f1c1ffff700 (LWP 9112)):
#0  0x00007f1ca2677233 in select () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f1ca3aa14f3 in qt_safe_select (nfds=36, fdread=0x7f1c68000aa8, fdwrite=0x7f1c68000d40, fdexcept=0x7f1c68000fd8, orig_timeout=0x0) at kernel/qcore_unix.cpp:83
#2  0x00007f1ca3aa6499 in QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7f1c680008f0, flags=..., timeout=0x0) at kernel/qeventdispatcher_unix.cpp:223
#3  0x00007f1ca3aa6c82 in QEventDispatcherUNIX::processEvents (this=0x7f1c6800cec0, flags=...) at kernel/qeventdispatcher_unix.cpp:937
#4  0x00007f1ca3a7438f in QEventLoop::processEvents (this=this@entry=0x7f1c1fffed90, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f1ca3a74618 in QEventLoop::exec (this=this@entry=0x7f1c1fffed90, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f1ca3976410 in QThread::exec (this=this@entry=0xdc53940) at thread/qthread.cpp:542
#7  0x00007f1ca3a55edf in QInotifyFileSystemWatcherEngine::run (this=0xdc53940) at io/qfilesystemwatcher_inotify.cpp:256
#8  0x00007f1ca3978bec in QThreadPrivate::start (arg=0xdc53940) at thread/qthread_unix.cpp:338
#9  0x00007f1c9fe8ef8e in start_thread (arg=0x7f1c1ffff700) at pthread_create.c:311
#10 0x00007f1ca267ee1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 1 (Thread 0x7f1ca4dfb7c0 (LWP 7751)):
[KCrash Handler]
#6  0x00007f1ca25bc037 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#7  0x00007f1ca25bf698 in __GI_abort () at abort.c:90
#8  0x00007f1ca396e5c2 in qt_message_output (msgType=msgType@entry=QtFatalMsg, buf=0xe47d0d8 "ASSERT: \"!m_sensorCache.contains(sensor->id())\" in file /build/buildd/krita-testing-2+git20130719+r74129-41/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.cpp, line 153") at global/qglobal.cpp:2347
#9  0x00007f1ca396e938 in qt_message(QtMsgType, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, msg=msg@entry=0x7f1ca3ad8548 "ASSERT: \"%s\" in file %s, line %d", ap=ap@entry=0x7fff78ebad08) at global/qglobal.cpp:2393
#10 0x00007f1ca396eac4 in qFatal (msg=msg@entry=0x7f1ca3ad8548 "ASSERT: \"%s\" in file %s, line %d") at global/qglobal.cpp:2576
#11 0x00007f1ca396eb06 in qt_assert (assertion=assertion@entry=0x7f1c7edbcec8 "!m_sensorCache.contains(sensor->id())", file=file@entry=0x7f1c7edbce50 "/build/buildd/krita-testing-2+git20130719+r74129-41/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.cpp", line=line@entry=153) at global/qglobal.cpp:2021
#12 0x00007f1c7ed92923 in KisMultiSensorsModel::pushSensorToCache (this=this@entry=0x68fcb30, sensor=sensor@entry=0xdc21c20) at /build/buildd/krita-testing-2+git20130719+r74129-41/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.cpp:153
#13 0x00007f1c7ed9333d in setData (value=..., index=..., this=0x68fcb30, role=<optimized out>) at /build/buildd/krita-testing-2+git20130719+r74129-41/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.cpp:73
#14 KisMultiSensorsModel::setData (this=this@entry=0x68fcb30, index=..., value=..., role=role@entry=10) at /build/buildd/krita-testing-2+git20130719+r74129-41/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.cpp:57
#15 0x00007f1ca33c7945 in QStyledItemDelegate::editorEvent (this=0x3218d00, event=0x7fff78ebbf60, model=0x68fcb30, option=..., index=...) at itemviews/qstyleditemdelegate.cpp:758
#16 0x00007f1ca33270a7 in QAbstractItemViewPrivate::sendDelegateEvent (this=this@entry=0x68fc6d0, index=..., event=event@entry=0x7fff78ebbf60) at itemviews/qabstractitemview.cpp:4184
#17 0x00007f1ca332c51a in QAbstractItemView::edit (this=this@entry=0x68fc6a0, index=..., trigger=trigger@entry=QAbstractItemView::NoEditTriggers, event=event@entry=0x7fff78ebbf60) at itemviews/qabstractitemview.cpp:2560
#18 0x00007f1ca3327410 in QAbstractItemView::mouseReleaseEvent (this=0x68fc6a0, event=0x7fff78ebbf60) at itemviews/qabstractitemview.cpp:1802
#19 0x00007f1ca335199e in QListView::mouseReleaseEvent (this=<optimized out>, e=<optimized out>) at itemviews/qlistview.cpp:799
#20 0x00007f1ca2e68a89 in QWidget::event (this=this@entry=0x68fc6a0, event=event@entry=0x7fff78ebbf60) at kernel/qwidget.cpp:8375
#21 0x00007f1ca321b316 in QFrame::event (this=0x68fc6a0, e=0x7fff78ebbf60) at widgets/qframe.cpp:557
#22 0x00007f1ca33318bb in QAbstractItemView::viewportEvent (this=0x68fc6a0, event=0x7fff78ebbf60) at itemviews/qabstractitemview.cpp:1644
#23 0x00007f1ca3a757a6 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=this@entry=0x1856200, receiver=receiver@entry=0x68fcc00, event=event@entry=0x7fff78ebbf60) at kernel/qcoreapplication.cpp:1056
#24 0x00007f1ca2e1b8bc in QApplicationPrivate::notify_helper (this=this@entry=0x1856200, receiver=receiver@entry=0x68fcc00, e=e@entry=0x7fff78ebbf60) at kernel/qapplication.cpp:4563
#25 0x00007f1ca2e1ea33 in QApplication::notify (this=<optimized out>, receiver=receiver@entry=0x68fcc00, e=e@entry=0x7fff78ebbf60) at kernel/qapplication.cpp:4110
#26 0x00007f1c8ef9ad08 in KoApplication::notify (this=<optimized out>, receiver=0x68fcc00, event=0x7fff78ebbf60) at /build/buildd/krita-testing-2+git20130719+r74129-41/libs/main/KoApplication.cpp:556
#27 0x00007f1ca3a7563e in QCoreApplication::notifyInternal (this=0x7fff78ebca10, receiver=receiver@entry=0x68fcc00, event=event@entry=0x7fff78ebbf60) at kernel/qcoreapplication.cpp:946
#28 0x00007f1ca2e21933 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#29 QApplicationPrivate::sendMouseEvent (receiver=0x68fcc00, event=event@entry=0x7fff78ebbf60, alienWidget=0x68fcc00, nativeWidget=nativeWidget@entry=0x666ee20, buttonDown=buttonDown@entry=0x7f1ca38f9308 <qt_button_down>, lastMouseReceiver=..., spontaneous=spontaneous@entry=true) at kernel/qapplication.cpp:3178
#30 0x00007f1ca2e96d8c in QETWidget::translateMouseEvent (this=this@entry=0x666ee20, event=event@entry=0x7fff78ebc6f0) at kernel/qapplication_x11.cpp:4565
#31 0x00007f1ca2e95ef1 in QApplication::x11ProcessEvent (this=0x7fff78ebca10, event=event@entry=0x7fff78ebc6f0) at kernel/qapplication_x11.cpp:3746
#32 0x00007f1ca2ec1b39 in QEventDispatcherX11::processEvents (this=0x16e7440, flags=...) at kernel/qeventdispatcher_x11.cpp:132
#33 0x00007f1ca3a7438f in QEventLoop::processEvents (this=this@entry=0x7fff78ebc960, flags=...) at kernel/qeventloop.cpp:149
#34 0x00007f1ca3a74618 in QEventLoop::exec (this=this@entry=0x7fff78ebc960, flags=...) at kernel/qeventloop.cpp:204
#35 0x00007f1ca3a79cf6 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1218
#36 0x00007f1ca2e19ffc in QApplication::exec () at kernel/qapplication.cpp:3828
#37 0x00007f1c8f4f83f2 in kdemain (argc=<optimized out>, argv=<optimized out>) at /build/buildd/krita-testing-2+git20130719+r74129-41/krita/main.cc:79
#38 0x00000000004084ea in launch (argc=argc@entry=1, _name=_name@entry=0x1764d98 "/opt/project-neon/bin/krita", args=args@entry=0x1764db4 "\001", cwd=cwd@entry=0x0, envc=envc@entry=1, envs=<optimized out>, envs@entry=0x1764dbc "DISPLAY=:0", reset_env=false, tty=tty@entry=0x0, avoid_loops=false, startup_id_str=startup_id_str@entry=0x1764dcf "odysseas-Inspiron-7720;1374749953;431582;2117_TIME7855905") at ../../kinit/kinit.cpp:738
#39 0x00000000004095fb in handle_launcher_request (sock=8, who=<optimized out>) at ../../kinit/kinit.cpp:1230
#40 0x0000000000409c40 in handle_requests (waitForPid=waitForPid@entry=0) at ../../kinit/kinit.cpp:1423
#41 0x00000000004054f7 in main (argc=4, argv=<optimized out>, envp=0x7fff78ebd7f0) at ../../kinit/kinit.cpp:1911

Possible duplicates by query: bug 322707, bug 321758, bug 321616, bug 316495, bug 313194.

Reported using DrKonqi
Comment 1 Sven Langkamp 2013-07-26 12:18:16 UTC
There is a long list with checkboxes. Any chance that you might have hit one of those? If not can you try to toggle them on and off to see if something happens.
Comment 2 Odysseas 2013-07-26 12:30:49 UTC
If you are talking about the brush creator, some times it crashed when I opened it and tried to paint in the sketch area - without changing anything in the settings.
The only pattern I observed is that this happened in sessions where I was accessing the brush creator quite often.
I cannot connect the crashes with any particular setting in there. After some more crashes with random tools and filters, I think it was that particular file - or file size. Probably this belongs to another report.
Comment 3 Sven Langkamp 2013-08-17 20:01:01 UTC
*** Bug 323381 has been marked as a duplicate of this bug. ***
Comment 4 Sven Langkamp 2013-08-26 21:25:54 UTC
Found out how to reproduce it:

- go to sensor list and check and then uncheck one of them
- load a preset that has the same option checked
- uncheck the option
->assert
Comment 5 Halla Rempt 2013-09-29 12:50:10 UTC
Git commit 341247845a27860976a18711d86c92230b4ddc5b by Boudewijn Rempt.
Committed on 29/09/2013 at 12:29.
Pushed by rempt into branch 'master'.

Don't assert when storing a second deactivated sensor in the cache
CCMAIL:kimageshop@kde.org

This removes an assert that checks whether a deactivated
sensor is stored another time. This happens when you check,
modify, uncheck a sensor for one preset, then go to another
preset of the same paintop type that has that sensor activated
and you deactivate it.

The problem seems to be, afaict, that we try to remember
the settings of deactivated sensors, but do that per paintop
instance, not per preset.

There are two proper solutions:

* remove the caching of custom settings for deactivated sensors
* save customized but deactivated sensors to the presets

The question is, which one shall it be?

M  +1    -6    krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.cpp
M  +0    -1    krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.h

http://commits.kde.org/calligra/341247845a27860976a18711d86c92230b4ddc5b
Comment 6 Halla Rempt 2014-01-04 12:25:48 UTC
Okay, people seem happy with the way it is, let's keep this issue from cluttering bugzilla.