[Ktechlab-devel] Fwd: [KTechLab] [2015-07-08] Automatic crash report generated by DrKonqi

Zoltan Padrah zoltan.padrah at gmail.com
Fri Jul 24 12:21:22 UTC 2015


Hi,

I'm resending mail previous message, because it has not been
successfully sent. Sourceforge had a storage fault and most of the
sf.net has been taken offline. Now the mailing lists should work.

See details about sourceforge here:
http://sourceforge.net/blog/sourceforge-infrastructure-and-service-restoration-update-for-722/


---------- Forwarded message ----------
From: Zoltan Padrah <zoltan.padrah at gmail.com>
Date: 2015-07-20 9:30 GMT+03:00
Subject: Re: [KTechLab] [2015-07-08] Automatic crash report generated by DrKonqi
To: ktechlab-devel at lists.sourceforge.net, "Charles T. Bell" <cbell44 at cfl.rr.com>



Hello,

I've just pushed a fix for this crash to the usual KDE4 porting branch
on github:

https://github.com/ktechlab/ktechlab-0.3/tree/port-0.3.8-kde4-v1

There have been two bugs involved:
1. when loading a circuit, routing the connectors crashed when the
connectors have not been drawn in the main window
2. ktechlab crashed while it has been calculating the current through
connectors.

The exact cause of the second crash is not clear for me: iterating
over a list and removing certain elemets crashes at the last element
of the list.
In the code, a list of QPointer<Wire> objects created as a copy of an
existing list, then the new list is processed, and if a given
condition is true, elements are removed from that list. When the
removal of elements is done by copying the iterator that points to the
current element, incrementing it, and then removing the element of the
list pointed by the copy, then (1) the last element of the list is
accessed after it has been deleted and (2) somehow the copy of the
original iterator and the incremented iterator point to the same
object in memory.

KTechLab should not crash because of this issues anymore. Feel free to
test, and any feedback is welcome.

Best regards,

 Zoltan



On Mon, 13 Jul 2015 09:23:48 +0300, Zoltan Padrah
<"recent:zoltan.padrah"@gmail.com> wrote:

>
> Hello,
>
> this is definitely a bug in KTechLab. I can reproduce this issue on my computer, too, by opening the attached circuit file. When I will have time, I will start debugging it.
>
>
> If you (or anybody else) feels like investigating this issue, the output of the "valgrind" tool would be useful, just from the moment of crash.
>
> It can be run something like this:
>
> user at host:~/ktechlab-0.3$ valgrind --num-callers=32  ./inst-simple/bin/ktechlab
>
> The --num-callers option should be adjusted such that valgrind's logs to contain useful stack traces.
>
> When ktechlab crashes, valgrind should print a report about what it knows about the memory address on which ktechlab crashed. Hopefully it should print 2 stack traces: one identical to the Thread 1 from below, and one in which it shows where has been that (Pin object?) location freed/deleted, which is now illegally accessed.
>
> Chaveat about ktechlab in valgrind: if I run ktechlab in valgrind on my laptop in powersave mode, valgrind and ktechlab gets killed by SIGPIPE (signal 33?), because at startup it is too slow to respond to the grapics server (X11), and the graphics server closes the connection to it. This behaviour doesn't happen when the power management is set to any of ondemand/conservative/performance modes.
>
> Best regards,
>
>   Zoltan
>
>
>
> On Thu, 09 Jul 2015 06:58:31 +0300, Charles T. Bell <cbell44 at cfl.rr.com> wrote:
>
>> Application: ktechlab (0.3.6)
>> KDE Platform Version: 4.13.3
>> Qt Version: 4.8.6
>> Operating System: Linux 4.1.1-040101-generic x86_64
>> Distribution: Ubuntu 14.04.2 LTS
>>
>> -- Information about the crash:
>> <In detail, tell us what you were doing  when the application crashed.>
>> When NOT running a simulation it seems to hold okay.
>> When running a simulation it crashes almost immediately.
>> The crash can be reproduced every time.
>>
>> -- Backtrace:
>> Application: KTechLab (ktechlab), signal: Segmentation fault
>> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
>> [Current thread is 1 (Thread 0x7f604041e7c0 (LWP 16382))]
>>
>> Thread 3 (Thread 0x7f6028a60700 (LWP 16384)):
>> #0  0x00007ffef2dc3c46 in ?? ()
>> #1  0x00007f603c4ec920 in ?? () at kernel/qeventdispatcher_glib.cpp:591
>> from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
>> #2  0x00007f603b4bff00 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
>> #3  0x000000020285f1c0 in ?? ()
>> #4  0x00007f6024003130 in ?? ()
>> #5  0x00007f6028a5fc28 in ?? ()
>> #6  0x00007f6028a5fbc0 in ?? ()
>> #7  0x00007f6028a5fc30 in ?? ()
>> #8  0x00007f603b5bf92d in __GI___clock_gettime (clock_id=<optimized
>> out>, tp=<optimized out>) at ../sysdeps/unix/clock_gettime.c:115
>> #9  0x00007f603c411ad7 in do_gettime (frac=0x7f6028a5fb70,
>> sec=0x7f6028a5fb68) at tools/qelapsedtimer_unix.cpp:127
>> #10 qt_gettime () at tools/qelapsedtimer_unix.cpp:144
>> #11 0x00007f603c4edf05 in updateCurrentTime (this=0x1) at
>> kernel/qeventdispatcher_unix.cpp:354
>> #12 QTimerInfoList::timerWait (this=0x1, tm=...) at
>> kernel/qeventdispatcher_unix.cpp:460
>> #13 0x00007f603c4ec67c in timerSourcePrepareHelper (src=<optimized out>,
>> timeout=0x7f6028a5fc24) at kernel/qeventdispatcher_glib.cpp:143
>> #14 0x00007f603c4ec725 in timerSourcePrepare (source=<optimized out>,
>> timeout=<optimized out>) at kernel/qeventdispatcher_glib.cpp:176
>> #15 0x00007f60398e768d in g_main_context_prepare () from
>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>> #16 0x00007f60398e7f03 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
>> #17 0x00007f60398e80ec in g_main_context_iteration () from
>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>> #18 0x00007f603c4ec7be in QEventDispatcherGlib::processEvents
>> (this=0x7f60240008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:436
>> #19 0x00007f603c4be0af in QEventLoop::processEvents
>> (this=this at entry=0x7f6028a5fde0, flags=...) at kernel/qeventloop.cpp:149
>> #20 0x00007f603c4be3a5 in QEventLoop::exec
>> (this=this at entry=0x7f6028a5fde0, flags=...) at kernel/qeventloop.cpp:204
>> #21 0x00007f603c3bac5f in QThread::exec (this=this at entry=0x2ef7240) at
>> thread/qthread.cpp:537
>> #22 0x00007f603c49f823 in QInotifyFileSystemWatcherEngine::run
>> (this=0x2ef7240) at io/qfilesystemwatcher_inotify.cpp:265
>> #23 0x00007f603c3bd32f in QThreadPrivate::start (arg=0x2ef7240) at
>> thread/qthread_unix.cpp:349
>> #24 0x00007f6039baf182 in start_thread (arg=0x7f6028a60700) at
>> pthread_create.c:312
>> #25 0x00007f603b5b147d in clone () at
>> ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
>>
>> Thread 2 (Thread 0x7f6023015700 (LWP 16395)):
>> #0  0x00007ffef2dc3c46 in ?? ()
>> #1  0x00007f603c4ec920 in ?? () at kernel/qeventdispatcher_glib.cpp:591
>> from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
>> #2  0x00007f603c3b3244 in qWarning (msg=<optimized out>) at
>> global/qglobal.cpp:2511
>> #3  0x00007f60398e768d in g_main_context_prepare () from
>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>> #4  0x00007f60398e7f03 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
>> #5  0x00007f60398e80ec in g_main_context_iteration () from
>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>> #6  0x00007f603c4ec7be in QEventDispatcherGlib::processEvents
>> (this=0x7f601c0008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:436
>> #7  0x00007f603c4be0af in QEventLoop::processEvents
>> (this=this at entry=0x7f6023014de0, flags=...) at kernel/qeventloop.cpp:149
>> #8  0x00007f603c4be3a5 in QEventLoop::exec
>> (this=this at entry=0x7f6023014de0, flags=...) at kernel/qeventloop.cpp:204
>> #9  0x00007f603c3bac5f in QThread::exec (this=this at entry=0x3465d30) at
>> thread/qthread.cpp:537
>> #10 0x00007f603c49f823 in QInotifyFileSystemWatcherEngine::run
>> (this=0x3465d30) at io/qfilesystemwatcher_inotify.cpp:265
>> #11 0x00007f603c3bd32f in QThreadPrivate::start (arg=0x3465d30) at
>> thread/qthread_unix.cpp:349
>> #12 0x00007f6039baf182 in start_thread (arg=0x7f6023015700) at
>> pthread_create.c:312
>> #13 0x00007f603b5b147d in clone () at
>> ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
>>
>> Thread 1 (Thread 0x7f604041e7c0 (LWP 16382)):
>> [KCrash Handler]
>> #6  Pin::currentIsKnown (this=this at entry=0x20) at
>> /home/tommy/Downloads/ktechlab-0.3-port-0.3.8-kde4-v1/src/electronics/pin.h:110
>> #7  0x0000000000519248 in Wire::calculateCurrent (this=0x31cd570) at
>> /home/tommy/Downloads/ktechlab-0.3-port-0.3.8-kde4-v1/src/electronics/wire.cpp:38
>> #8  0x000000000051e5ca in CircuitDocument::calculateConnectorCurrents
>> (this=0x34d5910) at
>> /home/tommy/Downloads/ktechlab-0.3-port-0.3.8-kde4-v1/src/electronics/circuitdocument.cpp:423
>> #9  0x0000000000489854 in CanvasTip::updateVI (this=0x20,
>> this at entry=0x36f9270) at
>> /home/tommy/Downloads/ktechlab-0.3-port-0.3.8-kde4-v1/src/itemdocument.cpp:1173
>> #10 0x000000000048c239 in CanvasTip::displayVI
>> (this=this at entry=0x36f9270, connector=connector at entry=0x3625f00,
>> pos=...) at
>> /home/tommy/Downloads/ktechlab-0.3-port-0.3.8-kde4-v1/src/itemdocument.cpp:1146
>> #11 0x00000000004878a3 in ItemView::updateStatus (this=0x3740bd0) at
>> /home/tommy/Downloads/ktechlab-0.3-port-0.3.8-kde4-v1/src/itemview.cpp:630
>> #12 0x00007f603c4d387a in QMetaObject::activate (sender=0x36693c0,
>> m=<optimized out>, local_signal_index=<optimized out>, argv=0x0) at
>> kernel/qobject.cpp:3539
>> #13 0x00007f603c4d7a31 in QObject::event (this=0x36693c0, e=<optimized
>> out>) at kernel/qobject.cpp:1156
>> #14 0x00007f603d681e2c in QApplicationPrivate::notify_helper
>> (this=this at entry=0x28914a0, receiver=receiver at entry=0x36693c0,
>> e=e at entry=0x7ffef2cb0e40) at kernel/qapplication.cpp:4567
>> #15 0x00007f603d6884a0 in QApplication::notify
>> (this=this at entry=0x7ffef2cb11b0, receiver=receiver at entry=0x36693c0,
>> e=e at entry=0x7ffef2cb0e40) at kernel/qapplication.cpp:4353
>> #16 0x00007f603e38cd1a in KApplication::notify (this=0x7ffef2cb11b0,
>> receiver=0x36693c0, event=0x7ffef2cb0e40) at
>> ../../kdeui/kernel/kapplication.cpp:311
>> #17 0x00007f603c4bf4dd in QCoreApplication::notifyInternal
>> (this=0x7ffef2cb11b0, receiver=0x36693c0, event=0x7ffef2cb0e40) at
>> kernel/qcoreapplication.cpp:953
>> #18 0x00007f603c4ef323 in sendEvent (event=<optimized out>,
>> receiver=<optimized out>) at
>> ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
>> #19 QTimerInfoList::activateTimers (this=0x2895a20) at
>> kernel/qeventdispatcher_unix.cpp:621
>> #20 0x00007f603c4ec5f1 in timerSourceDispatch (source=<optimized out>)
>> at kernel/qeventdispatcher_glib.cpp:193
>> #21 0x00007f60398e7e04 in g_main_context_dispatch () from
>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>> #22 0x00007f60398e8048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
>> #23 0x00007f60398e80ec in g_main_context_iteration () from
>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>> #24 0x00007f603c4ec7a1 in QEventDispatcherGlib::processEvents
>> (this=0x2855af0, flags=...) at kernel/qeventdispatcher_glib.cpp:434
>> #25 0x00007f603d723be6 in QGuiEventDispatcherGlib::processEvents
>> (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
>> #26 0x00007f603c4be0af in QEventLoop::processEvents
>> (this=this at entry=0x7ffef2cb10b0, flags=...) at kernel/qeventloop.cpp:149
>> #27 0x00007f603c4be3a5 in QEventLoop::exec
>> (this=this at entry=0x7ffef2cb10b0, flags=...) at kernel/qeventloop.cpp:204
>> #28 0x00007f603c4c3b79 in QCoreApplication::exec () at
>> kernel/qcoreapplication.cpp:1225
>> #29 0x00007f603d68037c in QApplication::exec () at
>> kernel/qapplication.cpp:3828
>> #30 0x000000000043532d in main (argc=<optimized out>, argv=<optimized
>> out>) at
>> /home/tommy/Downloads/ktechlab-0.3-port-0.3.8-kde4-v1/src/core/main.cpp:70




More information about the Ktechlab-devel mailing list