View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008760 | ardour | bugs | public | 2021-06-24 13:19 | 2021-08-23 13:19 |
Reporter | wtay | Assigned To | x42 | ||
Priority | normal | Severity | minor | Reproducibility | sometimes |
Status | closed | Resolution | fixed | ||
Platform | Redhat | OS | Linux | OS Version | (any) |
Product Version | 6.7 | ||||
Summary | 0008760: Infinite loop in PortGroupList::gather | ||||
Description | If one of the ports disappears when PortGroupList::gather() is busy, .get_port_by_name() might return NULL and the iterator is not incremented before continuing the loop, resulting in an infinite loop. Possible patch: diff --git a/gtk2_ardour/port_group.cc b/gtk2_ardour/port_group.cc index 30c4aa828f..fbe63e22d9 100644 --- a/gtk2_ardour/port_group.cc +++ b/gtk2_ardour/port_group.cc @@ -632,6 +632,7 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp PortEngine::PortHandle ph = AudioEngine::instance()->port_engine().get_port_by_name (p); if (!ph) { + ++s; continue; } But it might be better to move the s++ in the for statement and remove the many `++s; continue;` patterns. | ||||
Steps To Reproduce | No reliable way to trigger this but having a lot of ports being added/removed will trigger it, like when starting/stopping pavucontrol or changing the card profile under PipeWire. | ||||
Additional Information | https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1265 | ||||
Tags | No tags attached. | ||||
Date Modified | Username | Field | Change |
---|---|---|---|
2021-06-24 13:19 | wtay | New Issue | |
2021-06-24 15:23 | x42 | Assigned To | => x42 |
2021-06-24 15:23 | x42 | Status | new => resolved |
2021-06-24 15:23 | x42 | Resolution | open => fixed |
2021-06-24 15:23 | x42 | Note Added: 0026003 | |
2021-08-23 13:19 | anonymous | Note Added: 0026125 | |
2021-08-23 13:19 | anonymous | Status | resolved => closed |