View Issue Details

IDProjectCategoryView StatusLast Update
0005414ardourbugspublic2014-04-04 09:39
Reporterchristophski Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
Product Version3.0 
Summary0005414: When duplicating range of audio, fatal error "request for non-existent audio range"
DescriptionWhen selecting a range of audio, press alt+d to duplicate the range. However this causes a popup called "Ardour 3 - Fatal Error" that reads "programming error: request for non-existent audio range (0)". The only thing to do is click "press for exit" which closes the session without saving.
However, there is definitely audio in the range, as I can see it and it plays. This happens on any track. However, I can pick a region and duplicate it in the same manner without this happening
Additional InformationUbuntu 12.10 w lowlatency kernel
TagsNo tags attached.

Activities

veda_sticks

2014-04-01 09:17

reporter   ~0015731

http://ardour.org/debugging_ardour.html

please use this guide for posting bug reports. Developers need additional information that will help in finding the problem.

Heres my bug report from within the GDB debugger.

Opened an existing project. Used the range tool to select a portion of audio on track one which is a recorded guitar. Pressed shift+d left it set to 1.0 duplicates. On pressing ok a dialogue pops up with

"programming error:request for non existant audio range (0)!"

On pressing Exit, ardour crashes

(ardour-3.5.357:2286): GLib-GObject-WARNING **: Attempt to add property gtkmm__CustomObject_N9Gtkmm2ext23CellRendererPixbufMultiE::active after class was initialised
[New Thread 0x7fffcc086700 (LWP 2301)]
[New Thread 0x7fffb80b4700 (LWP 2302)]
[New Thread 0x7fffb0166800 (LWP 2303)]
[New Thread 0x7fff95b40700 (LWP 2304)]
[New Thread 0x7fff94d77700 (LWP 2305)]
[New Thread 0x7fff87fff700 (LWP 2306)]
[Thread 0x7fffce40e700 (LWP 2295) exited]
[New Thread 0x7fffce40e700 (LWP 2307)]
[New Thread 0x7fff8665c700 (LWP 2308)]
[New Thread 0x7fff85e5b700 (LWP 2309)]
[Thread 0x7fff85e5b700 (LWP 2309) exited]
[Thread 0x7fff8665c700 (LWP 2308) exited]
[Thread 0x7fff87fff700 (LWP 2306) exited]
[Thread 0x7fffce40e700 (LWP 2307) exited]
[Thread 0x7fff94d77700 (LWP 2305) exited]
[Thread 0x7fff95b40700 (LWP 2304) exited]
[Thread 0x7fffb0166800 (LWP 2303) exited]
[Thread 0x7fffb80b4700 (LWP 2302) exited]
[Thread 0x7fffcdc0d700 (LWP 2300) exited]
[Thread 0x7fffccf3c700 (LWP 2299) exited]
[Thread 0x7fffe53bb700 (LWP 2298) exited]
[Thread 0x7fffe543c700 (LWP 2297) exited]
[Thread 0x7fffe533a700 (LWP 2294) exited]
[Thread 0x7fffe799c700 (LWP 2290) exited]
[Thread 0x7fffe819d700 (LWP 2289) exited]
[Thread 0x7fffe899e700 (LWP 2288) exited]
[Thread 0x7fffe919f700 (LWP 2287) exited]
[Thread 0x7ffff7faf900 (LWP 2286) exited]
[Inferior 1 (process 2286) exited with code 01]
(gdb) thread apply all bt
(gdb)


Ok the debugger didnt provide anything usefull as it looks like its not a crash, but ardour says press to exit so ardour is being asked to close rather than crashing.

christophski

2014-04-01 09:29

reporter   ~0015732

Last edited: 2014-04-01 09:29

Hi veda_sticks, thanks for the link. Could that somehow be put in the Report Issue page on Mantis so that new reporters actually see it?
And thanks for the extra details.

I am still experiencing this problem on Ardour 3.5.357 with Ubuntu 13.10
Uname -A: 3.8.0-35-lowlatency 0000027-Ubuntu SMP PREEMPT Tue Dec 10 05:05:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

veda_sticks

2014-04-04 09:39

reporter   ~0015735

This was posted by BrianSully on the forums, a possible fix for this bug


Update for
programming error: request for non-existant audio range (0) (http://tracker.ardour.org/view.php?id=5414#bugnotes)
follows.....

The problem starts when a drag event is triggered with the users selection of the range to be duplicated.

'clicked_selection' is set to zero at line 3956 in editor_drag.cc as part of the SelectionDrag::finished(..) callback.

This occurs even if the user action is a time selection.

After this the logic subsequently breaks down in 'TimeSelection::operator[] (uint32_t which)', line 33, time_selection.cc as 'which' (set from clicked_selection) now contains zero, the original clicked_selection id having been over written and lost. Hence the 'non-existent audio range (0)!' crash seven lines after.

You can see this with a couple of added debug cout lines after the loop start, line 35 time_selection.cc.

"
std::cout << "which = " << which << std::endl;
std::cout << "URHERE i = " << i->id << " (" << i->start << "," << i->end << ")" << std::endl;
"

You will see it iterating past the users time selection (identified by the start and end sample values) before finally crashing.

To fix this issue I tried moving where clicked_selection is zero'd (together with stop_canvas_autoscroll() for good measure) before the previous closing '}' in editor_drag.cc.
ie.,

"
--- editor_drag.cc 2014-02-19 18:22:52.000000000 +0000
+++ editor_drag.cc.new 2014-04-04 09:36:20.649246999 +0100
@@ -3950,10 +3950,13 @@
s->request_stop (false, false);
}

+
+ _editor->stop_canvas_autoscroll ();
+ _editor->clicked_selection = 0;
+
}

- _editor->stop_canvas_autoscroll ();
- _editor->clicked_selection = 0;
+
}

void
"

This seems to resolve the issue, duplicate works fine, no crash.
I don't not know yet what if any, other functionality this patch may break.
I'll leave it in my build here and test it more as I use Ardour.

Brian

Issue History

Date Modified Username Field Change
2013-03-25 20:51 christophski New Issue
2014-04-01 09:17 veda_sticks Note Added: 0015731
2014-04-01 09:29 christophski Note Added: 0015732
2014-04-01 09:29 christophski Note Edited: 0015732
2014-04-01 09:29 christophski Note Edited: 0015732
2014-04-04 09:39 veda_sticks Note Added: 0015735