Bug 204068 - Kmplot crash when opening a document (Equation::setFstr, Parser::eval)
Summary: Kmplot crash when opening a document (Equation::setFstr, Parser::eval)
Status: RESOLVED WORKSFORME
Alias: None
Product: kmplot
Classification: Applications
Component: general (show other bugs)
Version: 1.2.1
Platform: Unlisted Binaries Linux
: NOR crash
Target Milestone: ---
Assignee: Klaus-Dieter M
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-08-16 18:51 UTC by P Hoquet
Modified: 2018-11-30 03:46 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 P Hoquet 2009-08-16 18:51:20 UTC
Application that crashed: kmplot
Version of the application: 1.2.1
KDE Version: 4.3.00 (KDE 4.3.0) "release 155"
Qt Version: 4.5.2
Operating System: Linux 2.6.27.25-0.1-default i686

What I was doing when the application crashed:
When I try to open this document:
<!DOCTYPE kmpdoc>
<kmpdoc version="4" >
    <axes width="0.2" color="#282828" tic-legth="0.5" tic-width="0.3" >
        <show-axes>1</show-axes>
        <show-arrows>1</show-arrows>
        <show-label>1</show-label>
        <xmin>0</xmin>
        <xmax>9</xmax>
        <ymin>0</ymin>
        <ymax>105</ymax>
    </axes>
    <grid width="0.1" color="#aeaeae" >
        <mode>1</mode>
    </grid>
    <scale>
        <tic-x-mode>1</tic-x-mode>
        <tic-y-mode>1</tic-y-mode>
        <tic-x>1</tic-x>
        <tic-y>5</tic-y>
    </scale>
    <function f2-use-gradient="0" f1-use-gradient="0" f0-width="0.3" type="cartesian" use-parameter-slider="0" f1-show-plot-name="0" f1-gradient="0;#000000,1;#ffffff," f1-width="0.3" integral-color="#191970" integral-style="SolidLine" f0-show-tangent-field="0" f0-style="SolidLine" f1-visible="0" f1-show-tangent-field="0" f0-show-plot-name="0" integral-show-plot-name="0" f0-gradient="0;#000000,1;#ffffff," integral-use-gradient="0" f2-show-tangent-field="0" f2-width="0.3" integral-visible="0" f1-style="SolidLine" integral-show-tangent-field="0" f0-color="#191970" f1-show-extrema="0" f2-show-plot-name="0" f2-show-extrema="0" integral-show-extrema="0" f2-style="SolidLine" f0-show-extrema="0" integral-gradient="0;#000000,1;#ffffff," f1-color="#191970" f0-visible="1" parameter-slider="0" f2-gradient="0;#000000,1;#ffffff," f0-use-gradient="0" integral-width="0.3" use-parameter-list="0" f2-color="#191970" f2-visible="0" >
        <equation-0 step="0.05" >y(t)=20 + 40 t −½ g t²<differential x="0" y="1" />
        </equation-0>
        <arg-min use="0" >0</arg-min>
        <arg-max use="0" >2π</arg-max>
    </function>
    <function f2-use-gradient="0" f1-use-gradient="0" f0-width="0.3" type="cartesian" use-parameter-slider="0" f1-show-plot-name="0" f1-gradient="0;#000000,1;#ffffff," f1-width="0.3" integral-color="#006400" integral-style="SolidLine" f0-show-tangent-field="0" f0-style="SolidLine" f1-visible="0" f1-show-tangent-field="0" f0-show-plot-name="0" integral-show-plot-name="0" f0-gradient="0;#000000,1;#ffffff," integral-use-gradient="0" f2-show-tangent-field="0" f2-width="0.3" integral-visible="0" f1-style="SolidLine" integral-show-tangent-field="0" f0-color="#006400" f1-show-extrema="0" f2-show-plot-name="0" f2-show-extrema="0" integral-show-extrema="0" f2-style="SolidLine" f0-show-extrema="0" integral-gradient="0;#000000,1;#ffffff," f1-color="#006400" f0-visible="1" parameter-slider="0" f2-gradient="0;#000000,1;#ffffff," f0-use-gradient="0" integral-width="0.3" use-parameter-list="0" f2-color="#006400" f2-visible="0" >
        <equation-0 step="0.05" >f(t) = 60 + 10 t<differential x="0" y="1" />
        </equation-0>
        <arg-min use="1" >2</arg-min>
        <arg-max use="1" >4</arg-max>
    </function>
    <function f2-use-gradient="0" f1-use-gradient="0" f0-width="0.3" type="cartesian" use-parameter-slider="0" f1-show-plot-name="0" f1-gradient="0;#000000,1;#ffffff," f1-width="0.3" integral-color="#ff4500" integral-style="SolidLine" f0-show-tangent-field="0" f0-style="SolidLine" f1-visible="0" f1-show-tangent-field="0" f0-show-plot-name="0" integral-show-plot-name="0" f0-gradient="0;#000000,1;#ffffff," integral-use-gradient="0" f2-show-tangent-field="0" f2-width="0.3" integral-visible="0" f1-style="SolidLine" integral-show-tangent-field="0" f0-color="#ff4500" f1-show-extrema="0" f2-show-plot-name="0" f2-show-extrema="0" integral-show-extrema="0" f2-style="SolidLine" f0-show-extrema="0" integral-gradient="0;#000000,1;#ffffff," f1-color="#ff4500" f0-visible="1" parameter-slider="0" f2-gradient="0;#000000,1;#ffffff," f0-use-gradient="0" integral-width="0.3" use-parameter-list="0" f2-color="#ff4500" f2-visible="0" >
        <equation-0 step="0.05" >g(t) = 50 + 15 t<differential x="0" y="1" />
        </equation-0>
        <arg-min use="1" >2</arg-min>
        <arg-max use="1" >3</arg-max>
    </function>
    <function f2-use-gradient="0" f1-use-gradient="0" f0-width="0.3" type="cartesian" use-parameter-slider="0" f1-show-plot-name="0" f1-gradient="0;#000000,1;#ffffff," f1-width="0.3" integral-color="#808000" integral-style="SolidLine" f0-show-tangent-field="0" f0-style="SolidLine" f1-visible="0" f1-show-tangent-field="0" f0-show-plot-name="0" integral-show-plot-name="0" f0-gradient="0;#000000,1;#ffffff," integral-use-gradient="0" f2-show-tangent-field="0" f2-width="0.3" integral-visible="0" f1-style="SolidLine" integral-show-tangent-field="0" f0-color="#800000" f1-show-extrema="0" f2-show-plot-name="0" f2-show-extrema="0" integral-show-extrema="0" f2-style="SolidLine" f0-show-extrema="0" integral-gradient="0;#000000,1;#ffffff," f1-color="#808000" f0-visible="1" parameter-slider="0" f2-gradient="0;#000000,1;#ffffff," f0-use-gradient="0" integral-width="0.3" use-parameter-list="0" f2-color="#808000" f2-visible="0" >
        <equation-0 step="0.05" >h(t) = 40 + 20 t<differential x="0" y="1" />
        </equation-0>
        <arg-min use="0" >0</arg-min>
        <arg-max use="0" >2π</arg-max>
    </function>
    <fonts>
        <axes-font>Sans Serif</axes-font>
        <label-font>Sans Serif</label-font>
        <header-table-font>Sans Serif</header-table-font>
    </fonts>
</kmpdoc>

kmplot crash:



 -- Backtrace:
Application: KmPlot (kmplot), signal: Segmentation fault
[KCrash Handler]
#6  Equation::setFstr (this=0x80bd440, fstr=@0xbf879418, error=0xbf879430, errorPosition=0xbf87942c, force=false) at /usr/include/QtCore/qatomic_i386.h:120
#7  0xb443dc26 in Parser::eval (this=0x80bb038, str=@0xbf879520, error=0xbf879430, errorPosition=0xbf87942c) at /usr/src/debug/kdeedu-4.3.0/kmplot/kmplot/parser.cpp:266
#8  0xb4464bcb in View::initDrawing (this=0x81c18f0, device=0x81c1a0c, medium=View::Screen) at /usr/src/debug/kdeedu-4.3.0/kmplot/kmplot/view.cpp:274
#9  0xb4472be4 in View::draw (this=0x81c18f0, dev=0x81c1a0c, medium=View::Screen) at /usr/src/debug/kdeedu-4.3.0/kmplot/kmplot/view.cpp:421
#10 0xb4472d72 in View::drawPlot (this=0x81c18f0) at /usr/src/debug/kdeedu-4.3.0/kmplot/kmplot/view.cpp:2975
#11 0xb447494f in View::resizeEvent (this=0x81c18f0) at /usr/src/debug/kdeedu-4.3.0/kmplot/kmplot/view.cpp:2965
#12 0xb69981e6 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#13 0xb445d06b in View::event (this=0x0, e=0xbf87942c) at /usr/src/debug/kdeedu-4.3.0/kmplot/kmplot/view.cpp:4203
#14 0xb69417fc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#15 0xb6949bd2 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#16 0xb78f327d in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#17 0xb730a16b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#18 0xb69d8761 in QWidgetPrivate::setGeometry_sys(int, int, int, int, bool) () from /usr/lib/libQtGui.so.4
#19 0xb6997018 in QWidget::setGeometry(QRect const&) () from /usr/lib/libQtGui.so.4
#20 0xb6de0a90 in ?? () from /usr/lib/libQtGui.so.4
#21 0xb6d1e495 in ?? () from /usr/lib/libQtGui.so.4
#22 0xb6d494a2 in ?? () from /usr/lib/libQtGui.so.4
#23 0xb6d4aafa in ?? () from /usr/lib/libQtGui.so.4
#24 0xb6d4b238 in ?? () from /usr/lib/libQtGui.so.4
#25 0xb696f4ec in QLayoutPrivate::doResize(QSize const&) () from /usr/lib/libQtGui.so.4
#26 0xb696f625 in QLayout::activate() () from /usr/lib/libQtGui.so.4
#27 0xb6970bd8 in QLayout::widgetEvent(QEvent*) () from /usr/lib/libQtGui.so.4
#28 0xb69417c7 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#29 0xb6949bd2 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#30 0xb78f327d in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#31 0xb730a16b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#32 0xb730adb5 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
#33 0xb730afad in QCoreApplication::sendPostedEvents(QObject*, int) () from /usr/lib/libQtCore.so.4
#34 0xb7335c8f in ?? () from /usr/lib/libQtCore.so.4
#35 0xb61f19c8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#36 0xb61f5083 in ?? () from /usr/lib/libglib-2.0.so.0
#37 0xb61f5241 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#38 0xb73358d8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#39 0xb69e1ce5 in ?? () from /usr/lib/libQtGui.so.4
#40 0xb730878a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#41 0xb7308bd2 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#42 0xb730b079 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#43 0xb6941677 in QApplication::exec() () from /usr/lib/libQtGui.so.4
#44 0x0804fc7e in main (argc=2, argv=0xbf87a6b4) at /usr/src/debug/kdeedu-4.3.0/kmplot/kmplot/main.cpp:79

Reported using DrKonqi
Comment 1 eike.krumbacher 2011-11-02 14:24:46 UTC
I can reproduce this bug. If you rename one of your functions from g(t) to z(t) (for example), everything works fine. It seems, the parser of the function

y(t)=20 + 40 t −½ g t²

tries to use g(t) instead of the constant g. Just one of my thoughts.
Comment 2 Christoph Feck 2014-08-17 16:43:22 UTC
It does not crash, but the y(t) function is not drawn, when the constant "g" is not declared. The constants can be declared globally and/or only for the current document.

Interestingly, global constants are shared with kcalc, so you can define them there.

There bug here is that constants that are declared locally for the document are not saved together with the document, so on next load the y(t) function only is drawn, when the constant was declared globally.
Comment 3 Andrew Crouthamel 2018-10-31 03:49:28 UTC
Dear Bug Submitter,

This bug has been stagnant for a long time. Could you help us out and re-test if the bug is valid in the latest version? I am setting the status to NEEDSINFO pending your response, please change the Status back to REPORTED when you respond.

Thank you for helping us make KDE software even better for everyone!
Comment 4 Bug Janitor Service 2018-11-15 10:31:55 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 5 Bug Janitor Service 2018-11-30 03:46:09 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!