View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0006158 | ardour | bugs | public | 2015-02-03 23:19 | 2019-06-13 08:57 |
Reporter | ahellquist | Assigned To | chaot | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Summary | 0006158: Pressing ESC from tempo dialogue seg faults Ardour | ||||
Description | Fedora 21 Ardour 3.5.40593.5-4425-g9fab393 Pressing esc does nothing visible but triggers a seg fault | ||||
Additional Information | Related to 0006132 | ||||
Tags | No tags attached. | ||||
|
Escape does nothing for me (and is not intended to). A backtrace will be needed to get some clue about what is going on. http://ardour.org/debugging_ardour |
|
ESC seems assigned to "Break drag or deselect all" by default. The segfault is reproducible when we edit tempo or meter with a double click on the respective marker (right click and [Edit...] works). The tempo-edit-window blocks `finished' within `Drag::end_grab'. ESC triggers `DragManager::abort' and when this window is closed, `_editor->verbose_cursor' causes a segfault because the Drag is deleted. Another segfault is caused by `delete' in `DragManager::end_grab', after the return from Drag::end_grab. Attached the backtrace and a patch with a possible solution. |
2015-03-05 13:25
|
drag_segfault.patch (612 bytes)
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index f8b08d2..e89ef28 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -156,6 +156,11 @@ DragManager::end_grab (GdkEvent* e) if (t) { r = true; } + + if (_drags.empty()) { + break; + } + delete *i; } @@ -315,8 +320,10 @@ Drag::end_grab (GdkEvent* event) finished (event, _move_threshold_passed); - _editor->verbose_cursor()->hide (); - _cursor_ctx.reset(); + if (_drags->active()) { + _editor->verbose_cursor()->hide (); + _cursor_ctx.reset(); + } return _move_threshold_passed; } |
2015-03-05 13:25
|
bt.log (4,137 bytes)
#0 0x00000000067edbc0 in ?? () #1 0x000000000113f236 in Drag::end_grab (this=0x6d98860, event=0x7fffffffc6a0) at ../gtk2_ardour/editor_drag.cc:318 #2 0x000000000113ea2f in DragManager::end_grab (this=0x2c745f0, e=0x7fffffffc6a0) at ../gtk2_ardour/editor_drag.cc:155 #3 0x0000000001191e56 in Editor::button_release_handler (this=0x2b51770, item=0x80d86e0, event=0x7fffffffc6a0, item_type=TempoMarkerItem) at ../gtk2_ardour/editor_mouse.cc:1198 #4 0x0000000001138f79 in Editor::typed_event (this=0x2b51770, item=0x80d86e0, event=0x7fffffffc6a0, type=TempoMarkerItem) at ../gtk2_ardour/editor_canvas_events.cc:222 #5 0x000000000113a9a7 in Editor::canvas_tempo_marker_event (this=0x2b51770, event=0x7fffffffc6a0, item=0x80d86e0) at ../gtk2_ardour/editor_canvas_events.cc:1015 #6 0x0000000001367e5c in sigc::bound_mem_functor3<bool, PublicEditor, _GdkEvent*, ArdourCanvas::Item*, TempoMarker*>::operator() (this=0x71416f0, _A_a1=@0x7fffffffc580: 0x7fffffffc6a0, _A_a2=@0x7fffffffc318: 0x80d86e0, _A_a3=@0x7141718: 0x6ef2c30) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1985 #7 0x0000000001367995 in sigc::adaptor_functor<sigc::bound_mem_functor3<bool, PublicEditor, _GdkEvent*, ArdourCanvas::Item*, TempoMarker*> >::operator()<_GdkEvent* const&, ArdourCanvas::Container*&, TempoMarker*&> (this=0x71416e8, _A_arg1=@0x7fffffffc580: 0x7fffffffc6a0, _A_arg2=@0x7141710: 0x80d86e0, _A_arg3=@0x7141718: 0x6ef2c30) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:123 #8 0x0000000001367424 in sigc::bind_functor<-1, sigc::bound_mem_functor3<bool, PublicEditor, _GdkEvent*, ArdourCanvas::Item*, TempoMarker*>, ArdourCanvas::Container*, TempoMarker*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::operator()<_GdkEvent* const&> (this=0x71416e0, _A_arg1=@0x7fffffffc580: 0x7fffffffc6a0) at /usr/include/sigc++-2.0/sigc++/adaptors/bind.h:1336 #9 0x0000000001366cca in sigc::internal::slot_call1<sigc::bind_functor<-1, sigc::bound_mem_functor3<bool, PublicEditor, _GdkEvent*, ArdourCanvas::Item*, TempoMarker*>, ArdourCanvas::Container*, TempoMarker*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, bool, _GdkEvent*>::call_it (rep=0x71416b0, a_1=@0x7fffffffc580: 0x7fffffffc6a0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:137 #10 0x00007ffff79119c7 in sigc::internal::signal_emit1<bool, _GdkEvent*, ArdourCanvas::Item::EventAccumulator<bool> >::operator() (this=0x7fffffffc430, _A_slot=...) at /usr/include/sigc++-2.0/sigc++/signal.h:830 #11 0x00007ffff79115dd in sigc::internal::slot_iterator_buf<sigc::internal::signal_emit1<bool, _GdkEvent*, ArdourCanvas::Item::EventAccumulator<bool> >, bool>::operator* (this=0x7fffffffc3f0) at /usr/include/sigc++-2.0/sigc++/signal.h:302 #12 0x00007ffff7910fdb in ArdourCanvas::Item::EventAccumulator<bool>::operator()<sigc::internal::slot_iterator_buf<sigc::internal::signal_emit1<bool, _GdkEvent*, ArdourCanvas::Item::EventAccumulator<bool> >, bool> > (this=0x7fffffffc45f, first=..., last=...) at /mnt/part/src/ardour/libs/canvas/canvas/item.h:214 #13 0x00007ffff79106d0 in sigc::internal::signal_emit1<bool, _GdkEvent*, ArdourCanvas::Item::EventAccumulator<bool> >::emit (impl=0x6c8ec00, _A_a1=@0x7fffffffc580: 0x7fffffffc6a0) at /usr/include/sigc++-2.0/sigc++/signal.h:850 #14 0x00007ffff790f3b7 in sigc::signal1<bool, _GdkEvent*, ArdourCanvas::Item::EventAccumulator<bool> >::emit (this=0x80d8750, _A_a1=@0x7fffffffc580: 0x7fffffffc6a0) at /usr/include/sigc++-2.0/sigc++/signal.h:2777 #15 0x00007ffff790d8ad in sigc::signal1<bool, _GdkEvent*, ArdourCanvas::Item::EventAccumulator<bool> >::operator() (this=0x80d8750, _A_a1=@0x7fffffffc580: 0x7fffffffc6a0) at /usr/include/sigc++-2.0/sigc++/signal.h:2785 #16 0x00007ffff79094e7 in ArdourCanvas::GtkCanvas::deliver_event (this=0x2d38768, event=0x7fffffffc6a0) at ../libs/canvas/canvas.cc:690 #17 0x00007ffff790a721 in ArdourCanvas::GtkCanvas::on_button_release_event (this=0x2d38768, ev=0x813e8a0) at ../libs/canvas/canvas.cc:916 #18 0x00007ffff1e140b4 in Gtk::Widget_Class::button_release_event_callback(_GtkWidget*, _GdkEventButton*) |
|
tested again with 3.5 4747 and this has been resolved along the way |
|
sorry @ahellquist, reopened because it continues to crash here also after the last b72fc75 (perhaps now your ESC key is not assigned to "Break drag or deselect all"). Example: - double click on tempo marker (no right click and edit button) - press ESC (or the key assigned to "Break drag or deselect all") - close the dialog (cancel or apply) and bye bye daw The patch remains a possible solution. |
|
@tlat Correct, I apparently did not test double click to edit. It still crash for me too |
|
It was assigned to me, I am no dev |
|
This is a more fundamental issue with (keyboard) event handling in general. related issue: Drag regions to dropzone. While track creation is in progress, press Ctrl-z (undo). The keyboard request is 'added on top' of the event being currently processed: backtrace http://pastebin.com/UyNMR0aJ "on_button_release_event" -> [process mouse button event] then somehow the same thread jumps into key-press handling without finishing the first event. best guess so far: the issue is in the Item:EventAccumulator. |
|
I can no longer reproduce this issue with version 4.7. If there is no feedback in the next week or so to confirm this issue still exists, I will mark it as resolved. |
|
Because of timbyr's last comment and as I cannot reproduce this here, I'm marking this as resolved. |
|
Tested this in a fairly reasent build and of course this was not an issue. Closing the ticket |
|
Not an issue in resent builds |
Date Modified | Username | Field | Change |
---|---|---|---|
2015-02-03 23:19 | ahellquist | New Issue | |
2015-02-04 17:46 | paul | Note Added: 0016320 | |
2015-02-04 17:46 | paul | Status | new => feedback |
2015-03-05 13:24 | tlat | Note Added: 0016398 | |
2015-03-05 13:25 | tlat | File Added: drag_segfault.patch | |
2015-03-05 13:25 | tlat | File Added: bt.log | |
2015-03-13 22:51 | ahellquist | Note Added: 0016427 | |
2015-03-13 22:51 | ahellquist | Status | feedback => resolved |
2015-03-13 22:51 | ahellquist | Resolution | open => fixed |
2015-03-13 22:51 | ahellquist | Assigned To | => ahellquist |
2015-03-14 10:57 | tlat | Note Added: 0016436 | |
2015-03-14 10:58 | tlat | Status | resolved => feedback |
2015-03-14 10:58 | tlat | Resolution | fixed => reopened |
2015-03-14 11:28 | ahellquist | Note Added: 0016437 | |
2015-03-14 11:30 | ahellquist | Note Added: 0016438 | |
2015-03-14 11:30 | ahellquist | Status | feedback => assigned |
2015-03-17 15:41 | x42 | Assigned To | ahellquist => |
2015-03-17 15:41 | x42 | Status | assigned => confirmed |
2015-03-28 12:46 | x42 | Note Added: 0016506 | |
2016-02-22 03:23 | timbyr | Note Added: 0017989 | |
2016-02-22 03:23 | timbyr | Status | confirmed => feedback |
2016-02-22 03:31 | timbyr | Relationship added | related to 0006132 |
2016-04-23 16:54 | chaot | Note Added: 0018158 | |
2016-04-23 16:54 | chaot | Status | feedback => resolved |
2016-04-23 16:54 | chaot | Resolution | reopened => fixed |
2016-04-23 16:54 | chaot | Assigned To | => chaot |
2019-06-13 08:56 | ahellquist | Note Added: 0020673 | |
2019-06-13 08:57 | ahellquist | Status | resolved => closed |
2019-06-13 08:57 | ahellquist | Note Added: 0020674 |