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 |