It seems that a `Glib::ConvertError` is thrown, and then the
function that catches the error causes another ConvertError in
`err.what()` (which presumably include the filename that
causes the error).
relevant part of the backtrace (macOS Crashdump):
```
Glib::ConvertError::throw_func(_GError*) + 56
Glib::Error::throw_exception(_GError*) + 292
Glib::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, Glib::ustring const&) + 131
StringPrivate::Composition& StringPrivate::Composition::arg<Glib::ustring>(Glib::ustring const&) + 25
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > string_compose<Glib::ustring> (...) + 81
PBD::run_functor_for_paths(...) + 1313
```
While presentation info order information is restored from XML state,
track numbers are not, so make sure we setup track numbering during
loading (based on PI order info)
We simply ignore the direct out sends from trax.
Note `DEFINE_ENUM_CONVERT` for Role is defined in delivery.cc
so we need a static method to directly read the send's role.
This fixes a crash when SSL's channelstrip calls set-selection
early on during session load, during Session::load_routes.
Session::add_routes_inner calls calls ARDOUR::GUIIdle() which
can trigger a SSL Native Channel Strip 2" VST3 to call
VST3PI::setContextInfoValue, which in turn emits a
CoreSelection::send_selection_change before the session is
fully loaded.
This also handles various edge cases where a given AC may
not [yet] exist.
For livetrax, ::add_routes_inner calls ::reassign_track_numbers,
which in turn calls ::livetrax_queue_auto_connect.
This can result in a deadlock:
* GUI thread, ::add_routes_inner holds the process-lock
and ::livetrax_queue_auto_connect requests the `_auto_connect_queue_lock`
* auto-connect thread first takes the `_auto_connect_queue_lock and then
requests the process-lock
Rather than a send to the master outs, and the _main_outs delivery to physical outputs,
we now use a send to the physical outs and _main_outs to Master (as in mainline ardour)
* increase memory pool (bindings alone require 1.5 MB), and all session
scripts have a shared memory pool.
* use TLSF (like Lua DSP processors) - this fixes an issue with atomics
(notably int62_t, temporal) on macOS and ARM, which need to be
aligned.