OpenTimelineIO crash on Mac and FreeBSD
Using latest git master or 25.04 branch, Kdenlive crashes on Mac (only tested on arm) when trying to use the OpenTimelineIO export feature.
Crash seems related to casting to AnyDictionnary, and does not happen on Linux nor on Windows.
Latest binaries to reproduce the issus can be found here: https://files.kde.org/kdenlive/unstable/
<details><summary>Crash log</summary>
```
-------------------------------------
Translated Report (Full Report Below)
-------------------------------------
Process: kdenlive [12623]
Path: /Applications/kdenlive.app/Contents/MacOS/kdenlive
Identifier: org.kde.Kdenlive
Version: 25.03 ()
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
User ID: 501
Date/Time: 2025-04-06 11:06:17.9364 +0200
OS Version: macOS 14.7.4 (23H420)
Report Version: 12
Anonymous UUID: B7C78818-CBF6-B7DC-506B-5FC38CF6AEEA
Time Awake Since Boot: 760 seconds
System Integrity Protection: disabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: Namespace SIGNAL, Code 6 Abort trap: 6
Terminating Process: kdenlive [12623]
Application Specific Information:
abort() called
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x193dc95d0 __pthread_kill + 8
1 libsystem_pthread.dylib 0x193e01c20 pthread_kill + 288
2 libsystem_c.dylib 0x193d0ea30 abort + 180
3 libc++abi.dylib 0x193db8d08 abort_message + 132
4 libc++abi.dylib 0x193da8fa4 demangling_terminate_handler() + 320
5 libobjc.A.dylib 0x193a43c00 _objc_terminate() + 160
6 libc++abi.dylib 0x193db80cc std::__terminate(void (*)()) + 16
7 libc++abi.dylib 0x193dbb348 __cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*) + 88
8 libc++abi.dylib 0x193dbb28c __cxa_throw + 308
9 libopentimelineio.dylib 0x102a791dc std::__1::__throw_bad_any_cast[abi:ne180100]() + 44 (any:134)
10 libopentimelineio.dylib 0x102aaad44 opentimelineio::v1_0::AnyDictionary const& std::__1::any_cast[abi:ne180100]<opentimelineio::v1_0::AnyDictionary const&>(std::__1::any const&) + 4 (any:529) [inlined]
11 libopentimelineio.dylib 0x102aaad44 opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12::operator()(std::__1::any const&) const + 184 (serialization.cpp:719) [inlined]
12 libopentimelineio.dylib 0x102aaad44 decltype(std::declval<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12&>()(std::declval<std::__1::any const&>())) std::__1::__invoke[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12&, std::__1::any const&) + 184 (invoke.h:344) [inlined]
13 libopentimelineio.dylib 0x102aaad44 void std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12&, std::__1::any const&) + 184 (invoke.h:419) [inlined]
14 libopentimelineio.dylib 0x102aaad44 std::__1::__function::__alloc_func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12>, void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) + 184 (function.h:169) [inlined]
15 libopentimelineio.dylib 0x102aaad44 std::__1::__function::__func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12>, void (std::__1::any const&)>::operator()(std::__1::any const&) + 200 (function.h:311)
16 libopentimelineio.dylib 0x102aa1a5c std::__1::__function::__value_func<void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) const + 24 (function.h:428) [inlined]
17 libopentimelineio.dylib 0x102aa1a5c std::__1::function<void (std::__1::any const&)>::operator()(std::__1::any const&) const + 24 (function.h:981) [inlined]
18 libopentimelineio.dylib 0x102aa1a5c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::any const&) + 716 (serialization.cpp:1161)
19 libopentimelineio.dylib 0x102aa30e4 opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::AnyDictionary const&) + 132 (serialization.cpp:1109)
20 libopentimelineio.dylib 0x102a96038 opentimelineio::v1_0::GeneratorReference::write_to(opentimelineio::v1_0::SerializableObject::Writer&) const + 148 (generatorReference.cpp:36)
21 libopentimelineio.dylib 0x102aa2a8c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject const*) + 2292 (serialization.cpp:1066)
22 libopentimelineio.dylib 0x102aaab84 opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject*) + 16 (serializableObject.h:432) [inlined]
23 libopentimelineio.dylib 0x102aaab84 void opentimelineio::v1_0::SerializableObject::Writer::write<opentimelineio::v1_0::SerializableObject>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::SerializableObject> const&) + 16 (serializableObject.h:447) [inlined]
24 libopentimelineio.dylib 0x102aaab84 opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11::operator()(std::__1::any const&) const + 76 (serialization.cpp:713) [inlined]
25 libopentimelineio.dylib 0x102aaab84 decltype(std::declval<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&>()(std::declval<std::__1::any const&>())) std::__1::__invoke[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&) + 76 (invoke.h:344) [inlined]
26 libopentimelineio.dylib 0x102aaab84 void std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&) + 76 (invoke.h:419) [inlined]
27 libopentimelineio.dylib 0x102aaab84 std::__1::__function::__alloc_func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11>, void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) + 76 (function.h:169) [inlined]
28 libopentimelineio.dylib 0x102aaab84 std::__1::__function::__func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11>, void (std::__1::any const&)>::operator()(std::__1::any const&) + 88 (function.h:311)
29 libopentimelineio.dylib 0x102aa1a5c std::__1::__function::__value_func<void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) const + 24 (function.h:428) [inlined]
30 libopentimelineio.dylib 0x102aa1a5c std::__1::function<void (std::__1::any const&)>::operator()(std::__1::any const&) const + 24 (function.h:981) [inlined]
31 libopentimelineio.dylib 0x102aa1a5c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::any const&) + 716 (serialization.cpp:1161)
32 libopentimelineio.dylib 0x102aaad10 opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::AnyDictionary const&) + 84 (serialization.cpp:1109) [inlined]
33 libopentimelineio.dylib 0x102aaad10 opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12::operator()(std::__1::any const&) const + 132 (serialization.cpp:719) [inlined]
34 libopentimelineio.dylib 0x102aaad10 decltype(std::declval<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12&>()(std::declval<std::__1::any const&>())) std::__1::__invoke[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12&, std::__1::any const&) + 132 (invoke.h:344) [inlined]
35 libopentimelineio.dylib 0x102aaad10 void std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12&, std::__1::any const&) + 132 (invoke.h:419) [inlined]
36 libopentimelineio.dylib 0x102aaad10 std::__1::__function::__alloc_func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12>, void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) + 132 (function.h:169) [inlined]
37 libopentimelineio.dylib 0x102aaad10 std::__1::__function::__func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_12>, void (std::__1::any const&)>::operator()(std::__1::any const&) + 148 (function.h:311)
38 libopentimelineio.dylib 0x102aa1a5c std::__1::__function::__value_func<void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) const + 24 (function.h:428) [inlined]
39 libopentimelineio.dylib 0x102aa1a5c std::__1::function<void (std::__1::any const&)>::operator()(std::__1::any const&) const + 24 (function.h:981) [inlined]
40 libopentimelineio.dylib 0x102aa1a5c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::any const&) + 716 (serialization.cpp:1161)
41 libopentimelineio.dylib 0x102a77db0 void opentimelineio::v1_0::SerializableObject::Writer::write<std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::MediaReference>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::MediaReference>>>>>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::MediaReference>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::MediaReference>>>> const&) + 24 (serializableObject.h:441) [inlined]
42 libopentimelineio.dylib 0x102a77db0 opentimelineio::v1_0::Clip::write_to(opentimelineio::v1_0::SerializableObject::Writer&) const + 100 (clip.cpp:154)
43 libopentimelineio.dylib 0x102aa2a8c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject const*) + 2292 (serialization.cpp:1066)
44 libopentimelineio.dylib 0x102aaab84 opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject*) + 16 (serializableObject.h:432) [inlined]
45 libopentimelineio.dylib 0x102aaab84 void opentimelineio::v1_0::SerializableObject::Writer::write<opentimelineio::v1_0::SerializableObject>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::SerializableObject> const&) + 16 (serializableObject.h:447) [inlined]
46 libopentimelineio.dylib 0x102aaab84 opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11::operator()(std::__1::any const&) const + 76 (serialization.cpp:713) [inlined]
47 libopentimelineio.dylib 0x102aaab84 decltype(std::declval<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&>()(std::declval<std::__1::any const&>())) std::__1::__invoke[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&) + 76 (invoke.h:344) [inlined]
48 libopentimelineio.dylib 0x102aaab84 void std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&) + 76 (invoke.h:419) [inlined]
49 libopentimelineio.dylib 0x102aaab84 std::__1::__function::__alloc_func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11>, void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) + 76 (function.h:169) [inlined]
50 libopentimelineio.dylib 0x102aaab84 std::__1::__function::__func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11>, void (std::__1::any const&)>::operator()(std::__1::any const&) + 88 (function.h:311)
51 libopentimelineio.dylib 0x102aa1a5c std::__1::__function::__value_func<void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) const + 24 (function.h:428) [inlined]
52 libopentimelineio.dylib 0x102aa1a5c std::__1::function<void (std::__1::any const&)>::operator()(std::__1::any const&) const + 24 (function.h:981) [inlined]
53 libopentimelineio.dylib 0x102aa1a5c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::any const&) + 716 (serialization.cpp:1161)
54 libopentimelineio.dylib 0x102aaae78 opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::AnyVector const&) + 56 (serialization.cpp:1126) [inlined]
55 libopentimelineio.dylib 0x102aaae78 opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13::operator()(std::__1::any const&) const + 104 (serialization.cpp:723) [inlined]
56 libopentimelineio.dylib 0x102aaae78 decltype(std::declval<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13&>()(std::declval<std::__1::any const&>())) std::__1::__invoke[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13&, std::__1::any const&) + 104 (invoke.h:344) [inlined]
57 libopentimelineio.dylib 0x102aaae78 void std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13&, std::__1::any const&) + 104 (invoke.h:419) [inlined]
58 libopentimelineio.dylib 0x102aaae78 std::__1::__function::__alloc_func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13>, void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) + 104 (function.h:169) [inlined]
59 libopentimelineio.dylib 0x102aaae78 std::__1::__function::__func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13>, void (std::__1::any const&)>::operator()(std::__1::any const&) + 120 (function.h:311)
60 libopentimelineio.dylib 0x102aa1a5c std::__1::__function::__value_func<void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) const + 24 (function.h:428) [inlined]
61 libopentimelineio.dylib 0x102aa1a5c std::__1::function<void (std::__1::any const&)>::operator()(std::__1::any const&) const + 24 (function.h:981) [inlined]
62 libopentimelineio.dylib 0x102aa1a5c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::any const&) + 716 (serialization.cpp:1161)
63 libopentimelineio.dylib 0x102a7b528 void opentimelineio::v1_0::SerializableObject::Writer::write<std::__1::vector<opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::Composable>, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::Composable>>>>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::vector<opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::Composable>, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::Composable>>> const&) + 24 (serializableObject.h:441) [inlined]
64 libopentimelineio.dylib 0x102a7b528 opentimelineio::v1_0::Composition::write_to(opentimelineio::v1_0::SerializableObject::Writer&) const + 104 (composition.cpp:209)
65 libopentimelineio.dylib 0x102ab6c30 opentimelineio::v1_0::Track::write_to(opentimelineio::v1_0::SerializableObject::Writer&) const + 28 (track.cpp:40)
66 libopentimelineio.dylib 0x102aa2a8c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject const*) + 2292 (serialization.cpp:1066)
67 libopentimelineio.dylib 0x102aaab84 opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject*) + 16 (serializableObject.h:432) [inlined]
68 libopentimelineio.dylib 0x102aaab84 void opentimelineio::v1_0::SerializableObject::Writer::write<opentimelineio::v1_0::SerializableObject>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::SerializableObject> const&) + 16 (serializableObject.h:447) [inlined]
69 libopentimelineio.dylib 0x102aaab84 opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11::operator()(std::__1::any const&) const + 76 (serialization.cpp:713) [inlined]
70 libopentimelineio.dylib 0x102aaab84 decltype(std::declval<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&>()(std::declval<std::__1::any const&>())) std::__1::__invoke[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&) + 76 (invoke.h:344) [inlined]
71 libopentimelineio.dylib 0x102aaab84 void std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&) + 76 (invoke.h:419) [inlined]
72 libopentimelineio.dylib 0x102aaab84 std::__1::__function::__alloc_func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11>, void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) + 76 (function.h:169) [inlined]
73 libopentimelineio.dylib 0x102aaab84 std::__1::__function::__func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11>, void (std::__1::any const&)>::operator()(std::__1::any const&) + 88 (function.h:311)
74 libopentimelineio.dylib 0x102aa1a5c std::__1::__function::__value_func<void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) const + 24 (function.h:428) [inlined]
75 libopentimelineio.dylib 0x102aa1a5c std::__1::function<void (std::__1::any const&)>::operator()(std::__1::any const&) const + 24 (function.h:981) [inlined]
76 libopentimelineio.dylib 0x102aa1a5c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::any const&) + 716 (serialization.cpp:1161)
77 libopentimelineio.dylib 0x102aaae78 opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::AnyVector const&) + 56 (serialization.cpp:1126) [inlined]
78 libopentimelineio.dylib 0x102aaae78 opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13::operator()(std::__1::any const&) const + 104 (serialization.cpp:723) [inlined]
79 libopentimelineio.dylib 0x102aaae78 decltype(std::declval<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13&>()(std::declval<std::__1::any const&>())) std::__1::__invoke[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13&, std::__1::any const&) + 104 (invoke.h:344) [inlined]
80 libopentimelineio.dylib 0x102aaae78 void std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13&, std::__1::any const&) + 104 (invoke.h:419) [inlined]
81 libopentimelineio.dylib 0x102aaae78 std::__1::__function::__alloc_func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13>, void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) + 104 (function.h:169) [inlined]
82 libopentimelineio.dylib 0x102aaae78 std::__1::__function::__func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_13>, void (std::__1::any const&)>::operator()(std::__1::any const&) + 120 (function.h:311)
83 libopentimelineio.dylib 0x102aa1a5c std::__1::__function::__value_func<void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) const + 24 (function.h:428) [inlined]
84 libopentimelineio.dylib 0x102aa1a5c std::__1::function<void (std::__1::any const&)>::operator()(std::__1::any const&) const + 24 (function.h:981) [inlined]
85 libopentimelineio.dylib 0x102aa1a5c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::any const&) + 716 (serialization.cpp:1161)
86 libopentimelineio.dylib 0x102a7b528 void opentimelineio::v1_0::SerializableObject::Writer::write<std::__1::vector<opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::Composable>, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::Composable>>>>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::vector<opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::Composable>, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::Composable>>> const&) + 24 (serializableObject.h:441) [inlined]
87 libopentimelineio.dylib 0x102a7b528 opentimelineio::v1_0::Composition::write_to(opentimelineio::v1_0::SerializableObject::Writer&) const + 104 (composition.cpp:209)
88 libopentimelineio.dylib 0x102aa2a8c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject const*) + 2292 (serialization.cpp:1066)
89 libopentimelineio.dylib 0x102aaab84 opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject*) + 16 (serializableObject.h:432) [inlined]
90 libopentimelineio.dylib 0x102aaab84 void opentimelineio::v1_0::SerializableObject::Writer::write<opentimelineio::v1_0::SerializableObject>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::SerializableObject> const&) + 16 (serializableObject.h:447) [inlined]
91 libopentimelineio.dylib 0x102aaab84 opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11::operator()(std::__1::any const&) const + 76 (serialization.cpp:713) [inlined]
92 libopentimelineio.dylib 0x102aaab84 decltype(std::declval<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&>()(std::declval<std::__1::any const&>())) std::__1::__invoke[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&) + 76 (invoke.h:344) [inlined]
93 libopentimelineio.dylib 0x102aaab84 void std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&) + 76 (invoke.h:419) [inlined]
94 libopentimelineio.dylib 0x102aaab84 std::__1::__function::__alloc_func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11>, void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) + 76 (function.h:169) [inlined]
95 libopentimelineio.dylib 0x102aaab84 std::__1::__function::__func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11>, void (std::__1::any const&)>::operator()(std::__1::any const&) + 88 (function.h:311)
96 libopentimelineio.dylib 0x102aa1a5c std::__1::__function::__value_func<void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) const + 24 (function.h:428) [inlined]
97 libopentimelineio.dylib 0x102aa1a5c std::__1::function<void (std::__1::any const&)>::operator()(std::__1::any const&) const + 24 (function.h:981) [inlined]
98 libopentimelineio.dylib 0x102aa1a5c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::any const&) + 716 (serialization.cpp:1161)
99 libopentimelineio.dylib 0x102ab5fe8 void opentimelineio::v1_0::SerializableObject::Writer::write<opentimelineio::v1_0::Stack*>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::Stack* const&) + 28 (serializableObject.h:441) [inlined]
100 libopentimelineio.dylib 0x102ab5fe8 void opentimelineio::v1_0::SerializableObject::Writer::write<opentimelineio::v1_0::Stack>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::Stack> const&) + 68 (serializableObject.h:447)
101 libopentimelineio.dylib 0x102ab5f64 opentimelineio::v1_0::Timeline::write_to(opentimelineio::v1_0::SerializableObject::Writer&) const + 156 (timeline.cpp:40)
102 libopentimelineio.dylib 0x102aa2a8c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject const*) + 2292 (serialization.cpp:1066)
103 libopentimelineio.dylib 0x102aaab84 opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject*) + 16 (serializableObject.h:432) [inlined]
104 libopentimelineio.dylib 0x102aaab84 void opentimelineio::v1_0::SerializableObject::Writer::write<opentimelineio::v1_0::SerializableObject>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::SerializableObject::Retainer<opentimelineio::v1_0::SerializableObject> const&) + 16 (serializableObject.h:447) [inlined]
105 libopentimelineio.dylib 0x102aaab84 opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11::operator()(std::__1::any const&) const + 76 (serialization.cpp:713) [inlined]
106 libopentimelineio.dylib 0x102aaab84 decltype(std::declval<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&>()(std::declval<std::__1::any const&>())) std::__1::__invoke[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&) + 76 (invoke.h:344) [inlined]
107 libopentimelineio.dylib 0x102aaab84 void std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ne180100]<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&>(opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11&, std::__1::any const&) + 76 (invoke.h:419) [inlined]
108 libopentimelineio.dylib 0x102aaab84 std::__1::__function::__alloc_func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11>, void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) + 76 (function.h:169) [inlined]
109 libopentimelineio.dylib 0x102aaab84 std::__1::__function::__func<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11, std::__1::allocator<opentimelineio::v1_0::SerializableObject::Writer::_build_dispatch_tables()::$_11>, void (std::__1::any const&)>::operator()(std::__1::any const&) + 88 (function.h:311)
110 libopentimelineio.dylib 0x102aa1a5c std::__1::__function::__value_func<void (std::__1::any const&)>::operator()[abi:ne180100](std::__1::any const&) const + 24 (function.h:428) [inlined]
111 libopentimelineio.dylib 0x102aa1a5c std::__1::function<void (std::__1::any const&)>::operator()(std::__1::any const&) const + 24 (function.h:981) [inlined]
112 libopentimelineio.dylib 0x102aa1a5c opentimelineio::v1_0::SerializableObject::Writer::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::any const&) + 716 (serialization.cpp:1161)
113 libopentimelineio.dylib 0x102aa1724 opentimelineio::v1_0::SerializableObject::Writer::write_root(std::__1::any const&, opentimelineio::v1_0::Encoder&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, long long, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, long long>>> const*, opentimelineio::v1_0::ErrorStatus*) + 56 (serialization.cpp:843)
114 libopentimelineio.dylib 0x102aa3d44 opentimelineio::v1_0::serialize_json_to_file(std::__1::any const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, long long, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, long long>>> const*, opentimelineio::v1_0::ErrorStatus*, int) + 216 (serialization.cpp:1376)
115 libopentimelineio.dylib 0x102a9ddb8 opentimelineio::v1_0::SerializableObject::to_json_file(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, opentimelineio::v1_0::ErrorStatus*, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, long long, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, long long>>> const*, int) const + 188 (serializableObject.cpp:135)
```
</details>
issue