Skip to content

visionOS app fails to build with latest Sentry version, previously succeeded #3809

Description

@sebj

Platform

visionOS

Environment

Develop

Installed

Swift Package Manager

Version

8.22.4

Did it work on previous versions?

8.21.0

Steps to Reproduce

  1. Create a new VisionOS app project (Initial Scene: Window, Immersive Space Renderer: None for simplicity) in Xcode 15.3
  2. Add Sentry as a Swift Package Manager dependency
  3. Add only the first 'Sentry' product as a dependency for the app target
  4. Import Sentry and call SentrySDK.start { .. } (purely for testing purposes, I thew this into onAppear in ContentView in this fresh demo project)
  5. Build and run the app for the visionOS 1.1 simulator
  6. Observe the build fails

Expected Result

App builds and runs successfully on visionOS simulator

Actual Result

App fails to build and run on visionOS simulator.

Build errors:

ld: warning: Could not find or use auto-linked framework 'CoreAudioTypes': framework 'CoreAudioTypes' not found
Undefined symbols for architecture arm64:
  "std::__1::__shared_weak_count::__get_deleter(std::type_info const&) const", referenced from:
      vtable for std::__1::__shared_ptr_emplace<sentry::profiling::ThreadMetadataCache, std::__1::allocator<sentry::profiling::ThreadMetadataCache>> in Sentry[arm64][33](SentrySamplingProfiler.o)
      vtable for std::__1::__shared_ptr_emplace<sentry::profiling::SamplingProfiler, std::__1::allocator<sentry::profiling::SamplingProfiler>> in Sentry[arm64][158](SentryProfiler.o)
  "std::exception::what() const", referenced from:
      vtable for std::__1::bad_function_call in Sentry[arm64][141](SentryBacktrace.o)
  "std::logic_error::logic_error(char const*)", referenced from:
      std::length_error::length_error[abi:v160006](char const*) in Sentry[arm64][47](SentryThreadMetadataCache.o)
  "std::length_error::~length_error()", referenced from:
      std::__1::__throw_length_error[abi:v160006](char const*) in Sentry[arm64][47](SentryThreadMetadataCache.o)
  "std::bad_array_new_length::bad_array_new_length()", referenced from:
      std::__throw_bad_array_new_length[abi:v160006]() in Sentry[arm64][47](SentryThreadMetadataCache.o)
  "std::bad_array_new_length::~bad_array_new_length()", referenced from:
      std::__throw_bad_array_new_length[abi:v160006]() in Sentry[arm64][47](SentryThreadMetadataCache.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::resize(unsigned long, char)", referenced from:
      sentry::profiling::ThreadMetadataCache::metadataForThread(sentry::profiling::ThreadHandle const&) in Sentry[arm64][47](SentryThreadMetadataCache.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)", referenced from:
      sentry::profiling::ThreadMetadataCache::metadataForThread(sentry::profiling::ThreadHandle const&) in Sentry[arm64][47](SentryThreadMetadataCache.o)
      sentry::profiling::ThreadMetadataCache::metadataForThread(sentry::profiling::ThreadHandle const&) in Sentry[arm64][47](SentryThreadMetadataCache.o)
      sentry::profiling::ThreadMetadataCache::metadataForThread(sentry::profiling::ThreadHandle const&) in Sentry[arm64][47](SentryThreadMetadataCache.o)
      void std::__1::vector<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const, std::__1::allocator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const>>::__construct_one_at_end[abi:v160006]<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const>(sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const&&) in Sentry[arm64][47](SentryThreadMetadataCache.o)
      void std::__1::vector<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const, std::__1::allocator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const>>::__push_back_slow_path<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const>(sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const&&) in Sentry[arm64][47](SentryThreadMetadataCache.o)
      std::__1::reverse_iterator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const*> std::__1::__uninitialized_allocator_move_if_noexcept[abi:v160006]<std::__1::allocator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const>, std::__1::reverse_iterator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const*>, std::__1::reverse_iterator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const*>, std::__1::reverse_iterator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const*>>(std::__1::allocator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const>&, std::__1::reverse_iterator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const*>, std::__1::reverse_iterator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const*>, std::__1::reverse_iterator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const*>) in Sentry[arm64][47](SentryThreadMetadataCache.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)", referenced from:
      sentry::profiling::ThreadMetadataCache::metadataForThread(sentry::profiling::ThreadHandle const&) in Sentry[arm64][47](SentryThreadMetadataCache.o)
  "std::__1::__shared_weak_count::__release_weak()", referenced from:
      sentry::profiling::SamplingProfiler::SamplingProfiler(std::__1::function<void (sentry::profiling::Backtrace const&)>, unsigned int) in Sentry[arm64][33](SentrySamplingProfiler.o)
      sentry::profiling::SamplingProfiler::~SamplingProfiler() in Sentry[arm64][33](SentrySamplingProfiler.o)
      std::__1::shared_ptr<sentry::profiling::ThreadMetadataCache>::~shared_ptr[abi:v160006]() in Sentry[arm64][33](SentrySamplingProfiler.o)
      -[SentryProfiler start] in Sentry[arm64][158](SentryProfiler.o)
      std::__1::shared_ptr<sentry::profiling::SamplingProfiler>::operator=[abi:v160006](std::__1::shared_ptr<sentry::profiling::SamplingProfiler>&&) in Sentry[arm64][158](SentryProfiler.o)
      void std::__1::shared_ptr<sentry::profiling::SamplingProfiler>::__enable_weak_this[abi:v160006]<sentry::profiling::SamplingProfiler, sentry::profiling::SamplingProfiler, void>(std::__1::enable_shared_from_this<sentry::profiling::SamplingProfiler> const*, sentry::profiling::SamplingProfiler*) in Sentry[arm64][158](SentryProfiler.o)
      void std::__1::shared_ptr<sentry::profiling::SamplingProfiler>::__enable_weak_this[abi:v160006]<sentry::profiling::SamplingProfiler, sentry::profiling::SamplingProfiler, void>(std::__1::enable_shared_from_this<sentry::profiling::SamplingProfiler> const*, sentry::profiling::SamplingProfiler*) in Sentry[arm64][158](SentryProfiler.o)
      ...
  "std::__1::__shared_weak_count::~__shared_weak_count()", referenced from:
      std::__1::__shared_ptr_emplace<sentry::profiling::ThreadMetadataCache, std::__1::allocator<sentry::profiling::ThreadMetadataCache>>::~__shared_ptr_emplace() in Sentry[arm64][33](SentrySamplingProfiler.o)
      std::__1::__shared_ptr_emplace<sentry::profiling::ThreadMetadataCache, std::__1::allocator<sentry::profiling::ThreadMetadataCache>>::~__shared_ptr_emplace() in Sentry[arm64][33](SentrySamplingProfiler.o)
      -[SentryProfiler start] in Sentry[arm64][158](SentryProfiler.o)
      std::__1::__shared_ptr_emplace<sentry::profiling::SamplingProfiler, std::__1::allocator<sentry::profiling::SamplingProfiler>>::~__shared_ptr_emplace() in Sentry[arm64][158](SentryProfiler.o)
      std::__1::__shared_ptr_emplace<sentry::profiling::SamplingProfiler, std::__1::allocator<sentry::profiling::SamplingProfiler>>::~__shared_ptr_emplace() in Sentry[arm64][158](SentryProfiler.o)
  "std::__1::mutex::lock()", referenced from:
      sentry::profiling::SamplingProfiler::stopSampling() in Sentry[arm64][33](SentrySamplingProfiler.o)
      sentry::profiling::SamplingProfiler::startSampling(std::__1::function<void ()>) in Sentry[arm64][33](SentrySamplingProfiler.o)
      sentry::profiling::SamplingProfiler::isSampling() in Sentry[arm64][33](SentrySamplingProfiler.o)
      _trackProfilerForTracer in Sentry[arm64][156](SentryProfiledTracerConcurrency.o)
      _discardProfilerForTracer in Sentry[arm64][156](SentryProfiledTracerConcurrency.o)
      _profilerForFinishedTracer in Sentry[arm64][156](SentryProfiledTracerConcurrency.o)
      +[SentryProfiler startWithTracer:] in Sentry[arm64][158](SentryProfiler.o)
      ...
  "std::__1::mutex::unlock()", referenced from:
      sentry::profiling::SamplingProfiler::stopSampling() in Sentry[arm64][33](SentrySamplingProfiler.o)
      sentry::profiling::SamplingProfiler::stopSampling() in Sentry[arm64][33](SentrySamplingProfiler.o)
      sentry::profiling::SamplingProfiler::startSampling(std::__1::function<void ()>) in Sentry[arm64][33](SentrySamplingProfiler.o)
      sentry::profiling::SamplingProfiler::startSampling(std::__1::function<void ()>) in Sentry[arm64][33](SentrySamplingProfiler.o)
      sentry::profiling::SamplingProfiler::isSampling() in Sentry[arm64][33](SentrySamplingProfiler.o)
      _trackProfilerForTracer in Sentry[arm64][156](SentryProfiledTracerConcurrency.o)
      _trackProfilerForTracer in Sentry[arm64][156](SentryProfiledTracerConcurrency.o)
      ...
  "std::__1::mutex::~mutex()", referenced from:
      sentry::profiling::SamplingProfiler::SamplingProfiler(std::__1::function<void (sentry::profiling::Backtrace const&)>, unsigned int) in Sentry[arm64][33](SentrySamplingProfiler.o)
      sentry::profiling::SamplingProfiler::~SamplingProfiler() in Sentry[arm64][33](SentrySamplingProfiler.o)
      __GLOBAL__sub_I_SentryProfiledTracerConcurrency.mm in Sentry[arm64][156](SentryProfiledTracerConcurrency.o)
      __GLOBAL__sub_I_SentryProfiler.mm in Sentry[arm64][158](SentryProfiler.o)
      -[SentryProfilerState .cxx_destruct] in Sentry[arm64][211](SentryProfilerState.o)
  "std::exception::~exception()", referenced from:
      std::__1::bad_function_call::~bad_function_call() in Sentry[arm64][141](SentryBacktrace.o)
      std::__1::bad_function_call::~bad_function_call() in Sentry[arm64][141](SentryBacktrace.o)
  "std::set_terminate(void (*)())", referenced from:
      setEnabled(bool) in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      setEnabled(bool) in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "std::terminate()", referenced from:
      ___clang_call_terminate in Sentry[arm64][33](SentrySamplingProfiler.o)
  "typeinfo for std::__1::__shared_weak_count", referenced from:
      typeinfo for std::__1::__shared_ptr_emplace<sentry::profiling::ThreadMetadataCache, std::__1::allocator<sentry::profiling::ThreadMetadataCache>> in Sentry[arm64][33](SentrySamplingProfiler.o)
      typeinfo for std::__1::__shared_ptr_emplace<sentry::profiling::SamplingProfiler, std::__1::allocator<sentry::profiling::SamplingProfiler>> in Sentry[arm64][158](SentryProfiler.o)
  "typeinfo for char*", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for std::length_error", referenced from:
      std::__1::__throw_length_error[abi:v160006](char const*) in Sentry[arm64][47](SentryThreadMetadataCache.o)
  "typeinfo for std::bad_array_new_length", referenced from:
      std::__throw_bad_array_new_length[abi:v160006]() in Sentry[arm64][47](SentryThreadMetadataCache.o)
  "typeinfo for std::exception", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      typeinfo for std::__1::bad_function_call in Sentry[arm64][141](SentryBacktrace.o)
  "typeinfo for char", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for double", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for long double", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for float", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for unsigned char", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for int", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for unsigned int", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for long", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for unsigned long", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for short", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for unsigned short", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for long long", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "typeinfo for unsigned long long", referenced from:
      GCC_except_table5 in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "vtable for __cxxabiv1::__class_type_info", referenced from:
      typeinfo for std::__1::__function::__base<void (sentry::profiling::Backtrace const&)> in Sentry[arm64][158](SentryProfiler.o)
      typeinfo for -[SentryProfiler start]::$_0 in Sentry[arm64][158](SentryProfiler.o)
   NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for __cxxabiv1::__si_class_type_info", referenced from:
      typeinfo for std::__1::__shared_ptr_emplace<sentry::profiling::ThreadMetadataCache, std::__1::allocator<sentry::profiling::ThreadMetadataCache>> in Sentry[arm64][33](SentrySamplingProfiler.o)
      typeinfo for std::__1::bad_function_call in Sentry[arm64][141](SentryBacktrace.o)
      typeinfo for std::__1::__shared_ptr_emplace<sentry::profiling::SamplingProfiler, std::__1::allocator<sentry::profiling::SamplingProfiler>> in Sentry[arm64][158](SentryProfiler.o)
      typeinfo for std::__1::__function::__func<-[SentryProfiler start]::$_0, std::__1::allocator<-[SentryProfiler start]::$_0>, void (sentry::profiling::Backtrace const&)> in Sentry[arm64][158](SentryProfiler.o)
   NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for std::length_error", referenced from:
      std::length_error::length_error[abi:v160006](char const*) in Sentry[arm64][47](SentryThreadMetadataCache.o)
   NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "operator delete(void*)", referenced from:
      -[SentryTransactionContext getThreadInfo] in Sentry[arm64][30](SentryTransactionContext.o)
      sentry::profiling::SamplingProfiler::startSampling(std::__1::function<void ()>) in Sentry[arm64][33](SentrySamplingProfiler.o)
      sentry::profiling::SamplingProfiler::startSampling(std::__1::function<void ()>) in Sentry[arm64][33](SentrySamplingProfiler.o)
      sentry::profiling::(anonymous namespace)::deleteParams(void*) in Sentry[arm64][33](SentrySamplingProfiler.o)
      std::__1::__shared_ptr_emplace<sentry::profiling::ThreadMetadataCache, std::__1::allocator<sentry::profiling::ThreadMetadataCache>>::~__shared_ptr_emplace() in Sentry[arm64][33](SentrySamplingProfiler.o)
      std::__1::__shared_ptr_emplace<sentry::profiling::ThreadMetadataCache, std::__1::allocator<sentry::profiling::ThreadMetadataCache>>::__on_zero_shared_weak() in Sentry[arm64][33](SentrySamplingProfiler.o)
      std::__1::vector<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const, std::__1::allocator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const>>::__destroy_vector::operator()[abi:v160006]() in Sentry[arm64][33](SentrySamplingProfiler.o)
      ...
  "operator new(unsigned long)", referenced from:
      sentry::profiling::SamplingProfiler::SamplingProfiler(std::__1::function<void (sentry::profiling::Backtrace const&)>, unsigned int) in Sentry[arm64][33](SentrySamplingProfiler.o)
      sentry::profiling::SamplingProfiler::startSampling(std::__1::function<void ()>) in Sentry[arm64][33](SentrySamplingProfiler.o)
      std::__1::__allocation_result<std::__1::allocator_traits<std::__1::allocator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const>>::pointer> std::__1::__allocate_at_least[abi:v160006]<std::__1::allocator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const>>(std::__1::allocator<sentry::profiling::ThreadMetadataCache::ThreadHandleMetadataPair const>&, unsigned long) in Sentry[arm64][47](SentryThreadMetadataCache.o)
      std::__1::__allocation_result<std::__1::allocator_traits<std::__1::allocator<unsigned long>>::pointer> std::__1::__allocate_at_least[abi:v160006]<std::__1::allocator<unsigned long>>(std::__1::allocator<unsigned long>&, unsigned long) in Sentry[arm64][141](SentryBacktrace.o)
      -[SentryProfiler start] in Sentry[arm64][158](SentryProfiler.o)
      std::__1::__function::__func<-[SentryProfiler start]::$_0, std::__1::allocator<-[SentryProfiler start]::$_0>, void (sentry::profiling::Backtrace const&)>::__clone() const in Sentry[arm64][158](SentryProfiler.o)
      sentry::profiling::ThreadHandle::current() in Sentry[arm64][184](SentryThreadHandle.o)
      ...
  "___cxa_allocate_exception", referenced from:
      std::__1::__throw_length_error[abi:v160006](char const*) in Sentry[arm64][47](SentryThreadMetadataCache.o)
      std::__throw_bad_array_new_length[abi:v160006]() in Sentry[arm64][47](SentryThreadMetadataCache.o)
      std::__1::__throw_bad_function_call[abi:v160006]() in Sentry[arm64][141](SentryBacktrace.o)
  "___cxa_begin_catch", referenced from:
      ___clang_call_terminate in Sentry[arm64][33](SentrySamplingProfiler.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      ...
  "___cxa_current_exception_type", referenced from:
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "___cxa_end_catch", referenced from:
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
      CPPExceptionTerminate() (.cold.1) in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "___cxa_free_exception", referenced from:
      std::__1::__throw_length_error[abi:v160006](char const*) in Sentry[arm64][47](SentryThreadMetadataCache.o)
  "___cxa_rethrow", referenced from:
      CPPExceptionTerminate() in Sentry[arm64][92](SentryCrashMonitor_CPPException.o)
  "___gxx_personality_v0", referenced from:
      /Users/seb/Library/Developer/Xcode/DerivedData/Test_Vision-gpfvgwnixlwldjbbhpzoagrflbyn/Build/Products/Debug-xrsimulator/Sentry.framework/Sentry[arm64][138](PrivateSentrySDKOnly.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Are you willing to submit a PR?

No response

Metadata

Metadata

Assignees

Labels

No labels
No labels
No fields configured for issues without a type.

Projects

Status
No status
Status
No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions