mapbox / mapbox-gl-native

Interactive, thoroughly customizable maps in native Android, iOS, macOS, Node.js, and Qt applications, powered by vector tiles and OpenGL
https://mapbox.com/mobile
Other
4.35k stars 1.33k forks source link

mbgl::LayerManager::createLayout Crash #16518

Open hactar opened 3 years ago

hactar commented 3 years ago

We have an issue where our app sometimes crashes while starting to run UI tests in the iOS simulator. Its a heisenbug - so we have not seen occur while the debugger is attached.

Could anyone point us in the direction of what createLayout is doing here and what we might be doing wrong that would cause createLayout to crash? In particular, would this occur more during the loading of a styleURL, the switching of a style or when we add/remove sources, or all three?

Any pointers would be greatly appreciated...

Crashed Thread:        15  com.mapbox.mbgl.Worker 4

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [5675]
Thread 15 Crashed:: com.mapbox.mbgl.Worker 4
0   com.mapbox.Mapbox               0x000000011102d8fc mbgl::LayerManager::createLayout(mbgl::LayoutParameters const&, std::__1::unique_ptr<mbgl::GeometryTileLayer, std::__1::default_delete<mbgl::GeometryTileLayer> >, std::__1::vector<mbgl::Immutable<mbgl::style::LayerProperties>, std::__1::allocator<mbgl::Immutable<mbgl::style::LayerProperties> > > const&) + 60 (layer_manager.cpp:47)
1   com.mapbox.Mapbox               0x00000001112c9d22 mbgl::GeometryTileWorker::parse() + 1794 (geometry_tile_worker.cpp:389)
2   com.mapbox.Mapbox               0x00000001112c9589 mbgl::GeometryTileWorker::setData(std::__1::unique_ptr<mbgl::GeometryTileData const, std::__1::default_delete<mbgl::GeometryTileData const> >, std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, unsigned long long) + 233 (geometry_tile_worker.cpp:130)
3   com.mapbox.Mapbox               0x00000001112a22ea void mbgl::MessageImpl<mbgl::GeometryTileWorker, void (mbgl::GeometryTileWorker::*)(std::__1::unique_ptr<mbgl::GeometryTileData const, std::__1::default_delete<mbgl::GeometryTileData const> >, std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, unsigned long long), std::__1::tuple<std::__1::unique_ptr<mbgl::GeometryTileData const, std::__1::default_delete<mbgl::GeometryTileData const> >, std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, unsigned long long> >::invoke<0ul, 1ul, 2ul>(std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) + 138 (message.hpp:34)
4   com.mapbox.Mapbox               0x0000000110fe2cf2 mbgl::Mailbox::receive() + 370 (mailbox.cpp:83)
5   com.mapbox.Mapbox               0x0000000110fe2f6d mbgl::Mailbox::maybeReceive(std::__1::weak_ptr<mbgl::Mailbox> const&) + 45
6   com.mapbox.Mapbox               0x00000001112f3200 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0> >(void*) + 928 (thread:352)
7   libsystem_pthread.dylib         0x00007fff522b7109 _pthread_start + 148
8   libsystem_pthread.dylib         0x00007fff522b2b8b thread_start + 15

Configuration

Mapbox SDK versions: Mapbox iOS 5.9.0 iOS/macOS versions: 13.5 Device/simulator models: iPhone 8 Xcode version: 13.6

adrianstrahan commented 3 years ago

Hi, We're getting a very similar issue in our released iOS app:

0 (null) in __pthread_kill ()

1 (null) in pthread_kill ()

2 (null) in abort ()

3 (null) in abort_message ()

4 (null) in demangling_terminate_handler() ()

5 (null) in _objc_terminate() ()

6 (null) in std::__terminate(void (*)()) ()

7 (null) in std::terminate() ()

8 (null) in mbgl::LayerManager::createLayout(mbgl::LayoutParameters const&, std::1::unique_ptr<mbgl::GeometryTileLayer, std::__1::default_delete >, std::1::vector<mbgl::Immutable<m... ()

9 (null) in mbgl::GeometryTileWorker::parse() ()

10 (null) in mbgl::GeometryTileWorker::setData(std::1::unique_ptr<mbgl::GeometryTileData const, std::__1::default_delete >, std::1::set<std::__1::basic_string<char, std::__1::c... ()

11 (null) in void mbgl::MessageImpl<mbgl::GeometryTileWorker, void (mbgl::GeometryTileWorker::*)(std::__1::unique_ptr<mbgl::GeometryTileData const, std::__1::default_delete >, std:... ()

12 (null) in mbgl::Mailbox::receive() ()

13 (null) in std::1::split_buffer<std::1::unique_ptr<mbgl::Message, std::__1::default_delete >*, std::1::allocator<std::1::unique_ptr<mbgl::Message, std::1::default_delete >*> >::push_front+ 314484 (std::1::unique_ptr<mbgl::Message, std::1::default_delete >*&&) ()

14 (null) in std::1::deque_base<std::1::function<void ()>, std::1::allocator<std::__1::function<void ()> > >::clear+ 3644064 () ()

15 (null) in _pthread_start ()

16 (null) in thread_start ()

This is using Mapbox-iOS-SDK (6.2.1) on iOS 14.0.1 on an iPhone SE.

Does anyone have any ideas?