https://bugs.kde.org/show_bug.cgi?id=384026

--- Comment #5 from Alvin Wong <alvinhoc...@gmail.com> ---
(In reply to Silvio Grosso from comment #4)
> Hello Alvin !
> 
> First off, thanks a lot indeed for your help.
> You were right !
> Yesterday, my g'mic path was:
> C:/gmic-krita-qt-2.0.3_pre-win64/gmic_krita_qt.exe
> G'mic Version was: 2.0.3 170811 
> 
> After your message new path is set by me manually as:
> C:/Program Files/Krita (x64)/bin/gmic_krita_qt.exe
> 
> I don't know why Krita 2.3.1 picked up the wrong path because I have
> installed it through the x64.exe installer *without* getting a different
> version from the G'MIC websit.
> My wild guess is that maybe Krita picked up the wrong setting through some
> old configuration file still present on my computer (e.g. kritarc etc).

That's actually a weakness of the way Krita is handling the gmic-qt
configuration... if you have ever set a custom path before in the earlier beta
versions it will not be overridden, because use the same configuration entry.


> To make it short though the crash is still there even with the new setting
> :-(
> Here it is the new log crash file on Windows 10 - 64 bit:
> https://www.dropbox.com/s/0snontzroktebp5/kritacrash_2.0.4_new_gmic_settings.
> txt?dl=0
> 
> To force this crash it looks like you must close the  main G'mic window with
> all filters settings and only *afterwards* the secondary window which
> informs you that "the option to add a new layer is not implemented yet on
> Krita". If you close this secondary window at first most of the time only
> G'MIC crashes but Krita 2.3.1 continues working.

Thanks for the info, now I can get a crash in Krita but I'm getting a different
backtrace than yours...



(technical details below)

I'm actually getting a slightly different backtrace for the few times I've
tried, but they all fail at plugins\extensions\qmic\QMic.cpp:293 (frame #4 in
the below backtrace), which I suppose would be due to Krita trying to write a
message reply to the closed QLocalSocket (due to gmic-qt being closed early).

There are several issues that contributes to this:

1. The gmic-qt plugin does the QLocalSocket IPC on the UI thread (so does
Krita, but it's not really relevant here)
2. Krita shows a message box during the IPC (lien 270) and did not send a
response before that, which in turn blocked gmic-qt due to #1
3.Since gmic-qt is blocked, Windows will kindly offer to force-close it, and
thus the QLocalSocket will be killed
4. Krita tries to send the reply after the message box is dismissed, but the
socket is closed so it causes a crash (doesn't really make sense that the write
call doesn't check if the socket is closed...)


A possible quick fix is to defer the message box to show *after* the IPC is
completed (i.e. replyis sent back to gmic-qt and socket is closed normally)


#0  0x0000000068975100 in QIODevicePrivate::~QIODevicePrivate() () from
F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#1  0x000000006897731c in QIODevice::write(char const*, long long) () from
F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#2  0x000000006896270a in QDataStream::operator<<(int) () from
F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#3  0x0000000068962a21 in QDataStream::writeBytes(char const*, unsigned int) ()
from F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#4  0x000007fe815981f2 in QMic::connected (this=0x168cd5c0) at
F:\dev\krita\src_3.2\plugins\extensions\qmic\QMic.cpp:293
#5  0x000007fe815abcf5 in QMic::qt_static_metacall (_o=0x168cd5c0,
_c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at
F:/dev/krita/b_mgw54_x64_3.2/build_krita/plugins/extensions/qmic/moc_QMic.cpp:118
#6  0x0000000068a2e3fa in QMetaObject::activate(QObject*, int, int, void**) ()
from F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#7  0x0000000005156fa3 in
QLocalSocket::connectToServer(QFlags<QIODevice::OpenModeFlag>) () from
F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Network.dll
#8  0x0000000068a2e3fa in QMetaObject::activate(QObject*, int, int, void**) ()
from F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#9  0x0000000068a96f50 in QWinEventNotifier::activated(void*,
QWinEventNotifier::QPrivateSignal) () from
F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#10 0x0000000068a5072f in QWinEventNotifier::event(QEvent*) () from
F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#11 0x0000000000e2a33c in QApplicationPrivate::notify_helper(QObject*, QEvent*)
() from F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Widgets.dll
#12 0x0000000000e2f6a0 in QApplication::notify(QObject*, QEvent*) () from
F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Widgets.dll
#13 0x000007feb7d67f86 in KisApplication::notify (this=<optimized out>,
receiver=0x310daf50, event=0x22c110)
    at F:\dev\krita\src_3.2\libs\ui\KisApplication.cpp:543
#14 0x0000000068a0e312 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
() from F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#15 0x0000000068a5404b in
QEventDispatcherWin32Private::activateEventNotifier(QWinEventNotifier*) () from
F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#16 0x0000000068a549b1 in
QEventDispatcherWin32::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#17 0x000000000715ab55 in qwindows!qt_plugin_instance () from
F:\dev\krita\b_mgw54_x64_3.2\install\plugins\platforms\qwindows.dll
#18 0x0000000068a0d5ea in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from
F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#19 0x0000000068a14207 in QCoreApplication::exec() () from
F:\dev\krita\b_mgw54_x64_3.2\install\bin\Qt5Core.dll
#20 0x0000000140005b87 in main (argc=1, argv=0x6fd05c0) at
F:\dev\krita\src_3.2\krita\main.cc:289

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to