开源改变世界

启用高度图时的分段违规 #447

推推 grbl 2年前 (2023-02-01) 143次浏览
打开
ieb 打开了这个问题 2020 年 11 月 18 日 · 1条评论
打开

启用高度图时的分段违规#447

ieb 打开了这个问题 2020 年 11 月 18 日 · 1条评论

注释

启用高度图时的分段违规 #447

版本

  • Candle 版本:0.9、1.1(使用 git 标签从源代码构建)
  • 固件版本:0.9f

电脑信息

  • 操作系统:Ubuntu 18.04
  • OpenGL 版本:见 ldd 输出

描述
Candle 可靠地生成分段冲突并在打开任何 G 代码文件时崩溃,随后打开并启用由 Candle 生成的高度图文件。选中高度图启用框时会发生崩溃。

重现
重现行为的步骤:

  1. 打开附件test1.nc
  2. 打开附加的高度图 test1.map
  3. 单击启用高度图
  4. 生成分段错误和核心转储

预期行为
不应崩溃

截图

示例文件

使用 qmake + make 从源代码构建的附加上下文
可在 0.9 和 1.1 上重现。
使用和不使用调试符号均可重现。
堆可能已被早期调用损坏。

堆栈跟踪

ieb@peskyrat0:~/cadcam/Candle/src$ gdb -c crash/CoreDump Candle 
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from Candle...done.
[New LWP 28741]
[New LWP 28743]
[New LWP 28742]
[New LWP 28745]
[New LWP 28744]
[New LWP 28754]
[New LWP 28747]
[New LWP 28748]
[New LWP 28749]
[New LWP 28750]
[New LWP 28764]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./Candle'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  std::__atomic_base<int>::load (__m=std::memory_order_relaxed, this=0x0)
    at /usr/include/c++/7/bits/atomic_base.h:396
396		return __atomic_load_n(&_M_i, __m);
[Current thread is 1 (Thread 0x7fb154872780 (LWP 28741))]
(gdb) bt
#0  std::__atomic_base<int>::load (__m=std::memory_order_relaxed, this=0x0)
    at /usr/include/c++/7/bits/atomic_base.h:396
#1  QAtomicOps<int>::load<int> (_q_value=...)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic_cxx11.h:227
#2  QBasicAtomicInteger<int>::load (this=0x0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qbasicatomic.h:102
#3  QtPrivate::RefCount::ref (this=0x0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qrefcount.h:55
#4  QList<int>::QList (this=0x7ffdb2759810, l=...)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:809
#5  0x0000559a63527961 in QtPrivate::QForeachContainer<QList<int> >::QForeachContainer (t=..., 
    this=0x7ffdb2759810) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:937
#6  QtPrivate::qMakeForeachContainer<QList<int> const&> (t=...)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:965
#7  frmMain::onTableCurrentChanged (this=<optimised out>, idx1=..., idx2=...) at frmmain.cpp:1957
#8  0x0000559a63576f9d in frmMain::qt_static_metacall (_o=<optimised out>, _id=<optimised out>, 
    _a=<optimised out>, _c=<optimised out>) at moc_frmmain.cpp:431
#9  0x00007fb152dc1555 in QMetaObject::activate(QObject*, int, int, void**) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#10 0x00007fb152d3e68a in QItemSelectionModel::currentChanged(QModelIndex const&, QModelIndex const&) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#11 0x00007fb152d3e97e in QItemSelectionModel::setCurrentIndex(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007fb153fc18ec in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x0000559a635364c5 in frmMain::on_chkHeightMapUse_clicked (this=0x7ffdb275ac70, 
    checked=<optimised out>) at frmmain.cpp:3603
#14 0x0000559a63577153 in frmMain::qt_static_metacall (_a=0x7ffdb2759ee0, _id=74, 
    _c=QMetaObject::InvokeMetaMethod, _o=0x7ffdb275ac70) at moc_frmmain.cpp:537
#15 frmMain::qt_metacall (this=0x7ffdb275ac70, _c=QMetaObject::InvokeMetaMethod, _id=74, 
    _a=0x7ffdb2759ee0) at moc_frmmain.cpp:538
#16 0x00007fb152dc1619 in QMetaObject::activate(QObject*, int, int, void**) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#17 0x00007fb153e19ba2 in QAbstractButton::clicked(bool) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
---Type <return> to continue, or q <return> to quit--- 
#18 0x00007fb153e19dba in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007fb153e1b19a in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007fb153e1b38d in QAbstractButton::mouseReleaseEvent(QMouseEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007fb153d67048 in QWidget::event(QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007fb153d2883c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007fb153d3065f in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007fb152d928d8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007fb153d2f632 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007fb153d8216b in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007fb153d847da in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007fb153d2883c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007fb153d30104 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#30 0x00007fb152d928d8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#31 0x00007fb15356c583 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#32 0x00007fb15356e055 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#33 0x00007fb1535452eb in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#34 0x00007fb14bcfa260 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#35 0x00007fb1500e9417 in g_main_context_dispatch () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#36 0x00007fb1500e9650 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#37 0x00007fb1500e96dc in g_main_context_iteration ()
   from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#38 0x00007fb152deb88f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
    () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#39 0x00007fb152d9090a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#40 0x00007fb152d999b4 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#41 0x0000559a6351dc1a in main (argc=<optimised out>, argv=<optimised out>) at main.cpp:159

输出


linux-vdso.so.1 (0x00007fff3b3c3000)
	libQt5OpenGL.so.5 => /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5 (0x00007f7bb2ae4000)
	libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007f7bb229d000)
	libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007f7bb1b34000)
	libQt5SerialPort.so.5 => /usr/lib/x86_64-linux-gnu/libQt5SerialPort.so.5 (0x00007f7bb191c000)
	libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f7bb11d1000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7bb0e48000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7bb0aaa000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7bb0892000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7bb04a1000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7bb0282000)
	libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f7bafff6000)
	libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f7bafdc4000)
	libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f7bafb26000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f7baf909000)
	libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f7baf6eb000)
	libicui18n.so.60 => /usr/lib/x86_64-linux-gnu/libicui18n.so.60 (0x00007f7baf24a000)
	libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007f7baee92000)
	libdouble-conversion.so.1 => /usr/lib/x86_64-linux-gnu/libdouble-conversion.so.1 (0x00007f7baec81000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7baea7d000)
	libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f7bae766000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f7bb2fea000)
	libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f7bae535000)
	libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f7bae27f000)
	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f7badfcb000)
	libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f7badd9e000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f7badb96000)
	libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007f7babfed000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f7babd7b000)
	libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f7baba43000)
	libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f7bab81b000)
	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f7bab617000)
	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f7bab411000)
	libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f7bab1fc000)

如果需要,可提供包含用于重现 CoreDump 的 nc 和映射文件的test_files.zip
(8MB)。

如果无法修复,则将切换到 Windows ;(

启用高度图时的分段违规 #447
作者

使用相同设置构建的 HEAD 不会出现段错误,因此我可以在 1.0 中创建高度图,保存,在最新版本中处理 gcode 文件,保存,加载到 1.0 中并运行(希望如此)。

由于缺少库,我无法让预编译版本在这个操作系统上运行。我怀疑如果可以解决丢失的库,预编译版本会起作用。

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

1名参加者
启用高度图时的分段违规 #447

喜欢 (0)