[Bug]: Crash in PostUserFeedback - Mapbox Navigation SDK
Mapbox Navigation SDK version
3.9.2
Steps to reproduce
Expected behavior
The App should not crash
Actual behavior
The app crashes.
Environment
- Xcode version: 15.3
- iOS version: 18.5.0
- Devices affected: iPhone 13 Pro Max
- Orientation: Portrait
- Jailbroken: No
- RAM Free: 1004.25 MB
Observed behavior
A crash occurred in production on June 9, 2025, at 14:03:28 on an iPhone 13 Pro Max running iOS 18.5.0. The crash is consistently triggered from within Mapbox's native telemetry layer during a call to postUserFeedback.
Stack trace excerpt:
Crashed: com.apple.root.utility-qos
0 MapboxNavigationNative 0x96ecc4 mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&) + 9172188
1 MapboxNavigationNative 0x96f054 mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&) + 9173100
2 MapboxNavigationNative 0x96f93c mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&) + 9175380
3 MapboxNavigationNative 0x970e60 mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&) + 9180792
4 MapboxNavigationNative 0xb99e64 XXH64_hashFromCanonical + 632368
5 MapboxNavigationNative 0xb65350 XXH64_hashFromCanonical + 416540
6 MapboxNavigationNative 0xb67dec XXH64_hashFromCanonical + 427448
7 MapboxNavigationNative 0xb668cc XXH64_hashFromCanonical + 422040
8 MapboxNavigationNative 0xb64560 XXH64_hashFromCanonical + 412972
9 MapboxNavigationNative 0xb63578 XXH64_hashFromCanonical + 408900
10 MapboxNavigationNative 0x6d4dac mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&) + 6444484
11 MapboxNavigationNative 0x6d3598 mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&) + 6438320
12 MapboxNavigationNative 0x6aa388 mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&) + 6269856
13 MapboxNavigationNative 0x6b33f0 mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&) + 6306824
14 MapboxNavigationNative 0x6a9650 mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&) + 6266472
15 MapboxNavigationNative 0x6ad4f4 mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&) + 6282508
16 MapboxNavigationNative 0x6b7d58 mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&) + 6325616
17 MapboxCommon 0x1a68dc mapbox::common::internal::scheduler::override::Set(std::__1::function<std::__1::shared_ptr<mapbox::common::Scheduler> (mapbox::common::ThreadServiceType)>, std::__1::function<std::__1::unique_ptr<mapbox::common::Scheduler, std::__1::default_delete<mapbox::common::Scheduler>> (mapbox::common::ThreadServiceType)>, std::__1::function<std::__1::unique_ptr<mapbox::common::Scheduler, std::__1::default_delete<mapbox::common::Scheduler>> (mapbox::common::Scheduler::DestructionPolicy, mapbox::common::ThreadServiceType)>) + 3628
18 MapboxCommon 0x171fb0 mapbox::common::platform::processTask(std::__1::function<void ()> const&) + 2956
19 libdispatch.dylib 0x1aac _dispatch_call_block_and_release + 32
20 libdispatch.dylib 0x1b584 _dispatch_client_callout + 16
21 libdispatch.dylib 0x37eb0 _dispatch_channel_invoke.cold.5 + 32
22 libdispatch.dylib 0x13f24 _dispatch_root_queue_drain + 736
23 libdispatch.dylib 0x1454c _dispatch_worker_thread2 + 156
24 libsystem_pthread.dylib 0x9d0 _pthread_wqthread + 232
25 libsystem_pthread.dylib 0xaac start_wqthread + 8
Is this a one-time issue or a repeatable issue?
repeatable
Hi @soheilnikbin, thank you for reporting this issue, and apologies for the delay in getting back to you.
I’ve investigated the issue by invoking Telemetry.postUserFeedback(for:userFeedback:callback:) in multiple scenarios (both during idle states and active guidance) using Mapbox Navigation SDK v3.9.2 on iOS 18.5.0. However, I was not able to reproduce the crash on my end.
Given that the crash appears to occur repeatably in your environment, it would be very helpful if you could provide:
- Specific steps to reproduce the crash.
- Any relevant code snippets or integration points related to user feedback submission.
- If possible, a minimal example project that triggers the crash.
This information will help us isolate the issue more effectively. Thank you.
Hi @soheilnikbin
I'd like to note that the MapboxNavigationNative is a binary framework distributed without dSYM. So it is possible that this stacktrace is incorrectly symbolicated. Could you please provide a raw stacktrace with memory addresses to symbolicate the crashlog on our side.
Aren't memory addresses already included as the second stack-trace column? Ex. 0x96ecc4 @kried
@a-h-mzd
The raw stacktrace does not contain any library symbols, it could look like this:
12 MapboxNavigationNative 0x10fc4504c 0x10fbcc000 + 5372
13 MapboxNavigationNative 0x10fc4018c 0x10fbcc000 + 28260
with the memory address instead of mapbox::bindgen::mapbox::navigation::telemetry::Telemetry::postUserFeedback(mapbox::navigation::telemetry::UserFeedbackMetadata&&, mapbox::navigation::telemetry::UserFeedback&&, std::__1::function<void (nonstd::expected_lite::expected<mapbox::geometry::point<double>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&)>&&)