Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash when using apply filter on curve #603

Closed
simchanu29 opened this issue Feb 11, 2022 · 1 comment
Closed

Crash when using apply filter on curve #603

simchanu29 opened this issue Feb 11, 2022 · 1 comment

Comments

@simchanu29
Copy link
Contributor

simchanu29 commented Feb 11, 2022

Problem description

At head of main (452065f), using dummy data, plotjuggler segfault when using apply_filter on curve.

Steps to reproduce

  • OS : Ubuntu 20.04

Steps :

  1. rosrun plotjuggler plotjuggler -n -t
  2. drag data1_ into plot area
  3. try to apply filter -> segfault

Peek 11-02-2022 13-51

Error :

Stack trace (most recent call last):
#31   Object "/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.12.8", at 0x7f5577e3d35a, in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>)
#30   Object "/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.12.8", at 0x7f5577e6310a, in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*)
#29   Object "/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.12.8", at 0x7f5577e617d2, in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*)
#28   Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8", at 0x7f5577a78809, in QCoreApplication::notifyInternal2(QObject*, QEvent*)
#27   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f557849a0ef, in QApplication::notify(QObject*, QEvent*)
#26   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f5578490a65, in QApplicationPrivate::notify_helper(QObject*, QEvent*)
#25   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f55784f21eb, in 
#24   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f55784efce3, in 
#23   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f5578499456, in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool)
#22   Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8", at 0x7f5577a78809, in QCoreApplication::notifyInternal2(QObject*, QEvent*)
#21   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f557849a342, in QApplication::notify(QObject*, QEvent*)
#20   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f5578490a65, in QApplicationPrivate::notify_helper(QObject*, QEvent*)
#19   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f557861dada, in QMenu::event(QEvent*)
#18   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f55784d32b5, in QWidget::event(QEvent*)
#17   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f557861b4d1, in QMenu::mouseReleaseEvent(QMouseEvent*)
#16   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f557861a4ad, in 
#15   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f5578612d11, in 
#14   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f557848caa1, in QAction::activate(QAction::ActionEvent)
#13   Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f557848a3e5, in QAction::triggered(bool)
#12   Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8", at 0x7f5577aa4327, in QMetaObject::activate(QObject*, int, int, void**)
#11 | Source "/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h", line 439, in call<QtPrivate::List<>, void>
    |   437:                 break;
    |   438:             case Call:
    | > 439:                 FuncType::template call<Args, R>(static_cast<QFunctorSlotObject*>(this_)->function, r, a);
    |   440:                 break;
    |   441:             case Compare: // not implemented
    | Source "/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h", line 256, in call
    |   254:         template <typename SignalArgs, typename R>
    |   255:         static void call(Function &f, void *, void **arg) {
    | > 256:             FunctorCall<typename Indexes<N>::Value, SignalArgs, R, Function>::call(f, arg);
    |   257:         }
    |   258:     };
    | Source "/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h", line 146, in operator()
    |   144:     struct FunctorCall<IndexesList<II...>, List<SignalArgs...>, R, Function> {
    |   145:         static void call(Function &f, void **arg) {
    | > 146:             f((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[II+1]))...), ApplyReturnValue<R>(arg[0]);
    |   147:         }
    |   148:     };
      Source "/home/simon/Logiciels/plotJuggler/ws_plotjuggler/src/PlotJuggler/plotjuggler_app/plotwidget.cpp", line 147, in __cxa_guard_release [0x55ef3a225066]
        145:   _action_formula = new QAction("&Apply filter to data...", this);
        146:   connect(_action_formula, &QAction::triggered, this, [=]() {
      > 147:     auto editor_dialog = new DialogTransformEditor(this);
        148:     int res = editor_dialog->exec();
        149:     editor_dialog->deleteLater();
        150:     if (res == QDialog::Accepted)
#10 | Source "/home/simon/Logiciels/plotJuggler/ws_plotjuggler/src/PlotJuggler/plotjuggler_app/plotwidget_transforms.cpp", line 51, in setSelected
    |    49:   if (ui->listCurves->count() != 0)
    |    50:   {
    | >  51:     ui->listCurves->item(0)->setSelected(true);
    |    52:   }
    |    53: }
      Source "/usr/include/x86_64-linux-gnu/qt5/QtWidgets/qlistwidget.h", line 335, in DialogTransformEditor [0x55ef3a232993]
        332: { return itemAt(QPoint(ax, ay)); }
        333: 
        334: inline void QListWidgetItem::setSelected(bool aselect)
      > 335: { if (view) view->setItemSelected(this, aselect); }
        336: 
        337: inline bool QListWidgetItem::isSelected() const
        338: { return (view ? view->isItemSelected(this) : false); }
#9    Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8", at 0x7f5578745805, in QListWidget::setItemSelected(QListWidgetItem const*, bool)
#8    Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8", at 0x7f5577a360c0, in QItemSelectionModel::select(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>)
#7    Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8", at 0x7f5577a3be96, in QItemSelectionModel::select(QItemSelection const&, QFlags<QItemSelectionModel::SelectionFlag>)
#6    Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8", at 0x7f5577a392c1, in QItemSelectionModel::emitSelectionChanged(QItemSelection const&, QItemSelection const&)
#5    Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8", at 0x7f5577a33e83, in QItemSelectionModel::selectionChanged(QItemSelection const&, QItemSelection const&)
#4    Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8", at 0x7f5577aa41cf, in QMetaObject::activate(QObject*, int, int, void**)
#3    Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8", at 0x7f5577aa428b, in QMetaObject::activate(QObject*, int, int, void**)
#2  | Source "/home/simon/Logiciels/plotJuggler/ws_plotjuggler/build/plotjuggler/plotjuggler_app/plotjuggler_autogen/EWIEGA46WW/moc_plotwidget_transforms.cpp", line 129, in qt_static_metacall
    |   127:     if (_c == QMetaObject::InvokeMetaMethod) {
    |   128:         if (_id < 5)
    | > 129:             qt_static_metacall(this, _c, _id, _a);
    |   130:         _id -= 5;
    |   131:     } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
      Source "/home/simon/Logiciels/plotJuggler/ws_plotjuggler/build/plotjuggler/plotjuggler_app/plotjuggler_autogen/EWIEGA46WW/moc_plotwidget_transforms.cpp", line 84, in qt_metacall [0x55ef3a1bf55c]
         82: void DialogTransformEditor::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
         83: {
      >  84:     if (_c == QMetaObject::InvokeMetaMethod) {
         85:         auto *_t = static_cast<DialogTransformEditor *>(_o);
         86:         Q_UNUSED(_t)
         87:         switch (_id) {
#1    Source "/home/simon/Logiciels/plotJuggler/ws_plotjuggler/src/PlotJuggler/plotjuggler_app/plotwidget_transforms.cpp", line 121, in on_listCurves_itemSelectionChanged [0x55ef3a2320a2]
        118:   auto ts = dynamic_cast<TransformedTimeseries*>(curve_it->curve->data());
        119: 
        120:   int transform_row = 0;
      > 121:   if (ts->transform())
        122:   {
        123:     for (int row = 1; row < ui->listTransforms->count(); row++)
        124:     {
#0  | Source "/home/simon/Logiciels/plotJuggler/ws_plotjuggler/src/PlotJuggler/plotjuggler_base/src/timeseries_qwt.cpp", line 75, in shared_ptr
    |    73: TransformFunction::Ptr TransformedTimeseries::transform()
    |    74: {
    | >  75:   return _transform;
    |    76: }
    | Source "/usr/include/c++/9/bits/shared_ptr.h", line 129, in __shared_ptr
    |   127:       constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { }
    |   128: 
    | > 129:       shared_ptr(const shared_ptr&) noexcept = default;
    |   130: 
    |   131:       /**
      Source "/usr/include/c++/9/bits/shared_ptr_base.h", line 1167, in transform [0x7f5578c6cc04]
       1164: 	: _M_ptr(__p), _M_refcount(__r._M_refcount) // never throws
       1165: 	{ }
       1166: 
      >1167:       __shared_ptr(const __shared_ptr&) noexcept = default;
       1168:       __shared_ptr& operator=(const __shared_ptr&) noexcept = default;
       1169:       ~__shared_ptr() = default;
Erreur de segmentation (Adresse non associée à un objet [0x140])
Erreur de segmentation (core dumped)
facontidavide added a commit that referenced this issue Feb 12, 2022
@facontidavide
Copy link
Owner

fixed. Thanks for reporting

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants