[Ardour-Dev] dead-lock caused by invalid comparison in control_protocol.cc

Giso Grimm gg3137 at vegri.net
Mon Jul 30 12:46:32 PDT 2007


I added a suggestion for a solution of this problem to the bug tracker
(http://tracker.ardour.org/file_download.php?file_id=421&type=bug). This
works fine for me, no crash any more, and now both first and last route
can be selected via the Frontier Tranzport device. I would not expect
impact on other components, since the tranzport-code is the only place
where the functions ControlProtocol::prev_track() and next_track() are
called. The patch is based on the 2.0.3-release.

- Giso

Giso Grimm wrote:
> Hi,
> 
> in function "void ControlProtocol::prev_track (uint32_t initial_id)" in
> the file control_protocol.cc the condition
> 
> while (id >= 0) {
>   ...
>   id--;
> }
> 
> is always true, since 'id' is of type uint32_t. This causes a dead-lock
> when selecting the prev-track button on a Frontier Tranzport device.
> Changing the type of 'id' to int32_t resolves this problem. I reported
> this bug on the bug tracker (http://tracker.ardour.org/view.php?id=1797).
> 
> Also the function ControlProtocol::next_track(...) looks a bit
> suspicious, I will have a closer look at it.
> 
> 
> - Giso




More information about the Ardour-Dev mailing list