Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Assertion failure after backgrounding app during animation — Environment::abandonVAO() #1309

Closed
1ec5 opened this issue Apr 20, 2015 · 6 comments
Assignees
Labels
crash iOS Mapbox Maps SDK for iOS
Milestone

Comments

@1ec5
Copy link
Contributor

1ec5 commented Apr 20, 2015

I hit this assertion failure somewhat consistently on an iPhone 6 running iOS 8.3 after backgrounding the iOS demo app during a drift pan animation that caused more tiles to be fetched and bringing the app back to the foreground:

Assertion failed: (currentlyOn(ThreadType::Map)), function abandonVAO, file /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/environment.cpp, line 144.
Worker (21)#0   0x0000000195a77270 in __pthread_kill ()
#1  0x0000000195b15170 in pthread_kill ()
#2  0x00000001959eeb18 in abort ()
#3  0x00000001959c3a3c in __assert_rtn ()
#4  0x00000001000efabc in mbgl::Environment::abandonVAO(unsigned int) at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/environment.cpp:144
#5  0x00000001000d0560 in mbgl::VertexArrayObject::~VertexArrayObject() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/geometry/vao.cpp:15
#6  0x00000001000d05e0 in mbgl::VertexArrayObject::~VertexArrayObject() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/geometry/vao.cpp:11
#7  0x00000001001c3834 in std::__1::array<mbgl::VertexArrayObject, 1ul>::~array() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/array:121
#8  0x00000001001c37b4 in std::__1::array<mbgl::VertexArrayObject, 1ul>::~array() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/array:121
#9  0x00000001001c374c in mbgl::ElementGroup<1>::~ElementGroup() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/geometry/elements_buffer.hpp:14
#10 0x00000001001c36e4 in mbgl::ElementGroup<1>::~ElementGroup() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/geometry/elements_buffer.hpp:14
#11 0x00000001001c54f0 in std::__1::default_delete<mbgl::ElementGroup<1> >::operator()(mbgl::ElementGroup<1>*) const [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2431
#12 0x00000001001c54dc in std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >::reset(mbgl::ElementGroup<1>*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2630
#13 0x00000001001c5480 in std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >::~unique_ptr() [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2598
#14 0x00000001001c5474 in std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >::~unique_ptr() [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2598
#15 0x00000001001c546c in std::__1::allocator<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > >::destroy(std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1700
#16 0x00000001001c5460 in void std::__1::allocator_traits<std::__1::allocator<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > > >::__destroy<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > >(std::__1::integral_constant<bool, true>, std::__1::allocator<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > >&, std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1584
#17 0x00000001001c5450 in void std::__1::allocator_traits<std::__1::allocator<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > > >::destroy<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > >(std::__1::allocator<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > >&, std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1487
#18 0x00000001001c5440 in std::__1::__vector_base<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >, std::__1::allocator<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > > >::__destruct_at_end(std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:444
#19 0x00000001001c53ec in std::__1::__vector_base<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >, std::__1::allocator<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > > >::clear() [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:368
#20 0x00000001001c53d8 in std::__1::__vector_base<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >, std::__1::allocator<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > > >::~__vector_base() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:471
#21 0x00000001001c535c in std::__1::vector<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >, std::__1::allocator<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > > >::~vector() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:477
#22 0x00000001001bf668 in std::__1::vector<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > >, std::__1::allocator<std::__1::unique_ptr<mbgl::ElementGroup<1>, std::__1::default_delete<mbgl::ElementGroup<1> > > > >::~vector() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:477
#23 0x00000001002026a0 in mbgl::SymbolBucket::TextBuffer::~TextBuffer() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/renderer/symbol_bucket.hpp:95
#24 0x00000001001f4d78 in mbgl::SymbolBucket::TextBuffer::~TextBuffer() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/renderer/symbol_bucket.hpp:95
#25 0x00000001001ef2b8 in mbgl::SymbolBucket::~SymbolBucket() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/renderer/symbol_bucket.cpp:31
#26 0x00000001001ef344 in mbgl::SymbolBucket::~SymbolBucket() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/renderer/symbol_bucket.cpp:29
#27 0x00000001001ef3ac in mbgl::SymbolBucket::~SymbolBucket() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/renderer/symbol_bucket.cpp:29
#28 0x00000001001b54c4 in std::__1::default_delete<mbgl::Bucket>::operator()(mbgl::Bucket*) const [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2431
#29 0x00000001001b54a4 in std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> >::reset(mbgl::Bucket*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2630
#30 0x00000001001b5440 in std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> >::~unique_ptr() [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2598
#31 0x00000001001b5434 in std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> >::~unique_ptr() [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2598
#32 0x00000001001b542c in std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >::~pair() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility:248
#33 0x00000001001b53c4 in std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >::~pair() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility:248
#34 0x00000001001b5314 in std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >::~__hash_value_type() [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/unordered_map:565
#35 0x00000001001b530c in std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >::~__hash_value_type() [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/unordered_map:565
#36 0x00000001001b5304 in void std::__1::allocator_traits<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, void*> > >::__destroy<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > > >(std::__1::integral_constant<bool, false>, std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, void*> >&, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1589
#37 0x00000001001b52f8 in void std::__1::allocator_traits<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, void*> > >::destroy<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > > >(std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, void*> >&, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1487
#38 0x00000001001b52e8 in std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > > > >::__deallocate(std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, void*>*) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__hash_table:1343
#39 0x00000001001b514c in std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > > > >::~__hash_table() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__hash_table:1283
#40 0x00000001001b50bc in std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > > > >::~__hash_table() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__hash_table:1282
#41 0x00000001001b5054 in std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> >, 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, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > > > >::~unordered_map() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/unordered_map:713
#42 0x00000001001b30fc in std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> >, 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, std::__1::unique_ptr<mbgl::Bucket, std::__1::default_delete<mbgl::Bucket> > > > >::~unordered_map() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/unordered_map:713
#43 0x00000001001b1f38 in mbgl::VectorTileData::~VectorTileData() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/vector_tile_data.cpp:32
#44 0x00000001001b20d4 in mbgl::VectorTileData::~VectorTileData() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/vector_tile_data.cpp:30
#45 0x0000000100159498 in std::__1::__shared_ptr_emplace<mbgl::VectorTileData, std::__1::allocator<mbgl::VectorTileData> >::__on_zero_shared() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:3738
#46 0x0000000194a91764 in std::__1::__shared_weak_count::__release_shared() ()
#47 0x000000010015d0a4 in std::__1::shared_ptr<mbgl::TileData>::~shared_ptr() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:4448
#48 0x0000000100151000 in std::__1::shared_ptr<mbgl::TileData>::~shared_ptr() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:4446
#49 0x000000010015e698 in std::__1::pair<unsigned long long const, std::__1::shared_ptr<mbgl::TileData> >::~pair() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility:248
#50 0x000000010015e630 in std::__1::pair<unsigned long long const, std::__1::shared_ptr<mbgl::TileData> >::~pair() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility:248
#51 0x000000010015e580 in std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >::~__hash_value_type() [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/unordered_map:565
#52 0x000000010015e578 in std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >::~__hash_value_type() [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/unordered_map:565
#53 0x000000010015e570 in void std::__1::allocator_traits<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, void*> > >::__destroy<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> > >(std::__1::integral_constant<bool, false>, std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, void*> >&, std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1589
#54 0x000000010015e564 in void std::__1::allocator_traits<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, void*> > >::destroy<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> > >(std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, void*> >&, std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1487
#55 0x000000010015e554 in std::__1::__hash_table<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, std::__1::__unordered_map_hasher<unsigned long long, std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, std::__1::hash<unsigned long long>, true>, std::__1::__unordered_map_equal<unsigned long long, std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, std::__1::equal_to<unsigned long long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> > > >::__deallocate(std::__1::__hash_node<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, void*>*) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__hash_table:1343
#56 0x000000010015e3b8 in std::__1::__hash_table<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, std::__1::__unordered_map_hasher<unsigned long long, std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, std::__1::hash<unsigned long long>, true>, std::__1::__unordered_map_equal<unsigned long long, std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, std::__1::equal_to<unsigned long long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> > > >::~__hash_table() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__hash_table:1283
#57 0x000000010015e328 in std::__1::__hash_table<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, std::__1::__unordered_map_hasher<unsigned long long, std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, std::__1::hash<unsigned long long>, true>, std::__1::__unordered_map_equal<unsigned long long, std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> >, std::__1::equal_to<unsigned long long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long long, std::__1::shared_ptr<mbgl::TileData> > > >::~__hash_table() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__hash_table:1282
#58 0x000000010015e2c0 in std::__1::unordered_map<unsigned long long, std::__1::shared_ptr<mbgl::TileData>, std::__1::hash<unsigned long long>, std::__1::equal_to<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, std::__1::shared_ptr<mbgl::TileData> > > >::~unordered_map() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/unordered_map:713
#59 0x000000010015e258 in std::__1::unordered_map<unsigned long long, std::__1::shared_ptr<mbgl::TileData>, std::__1::hash<unsigned long long>, std::__1::equal_to<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, std::__1::shared_ptr<mbgl::TileData> > > >::~unordered_map() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/unordered_map:713
#60 0x000000010015e188 in mbgl::TileCache::~TileCache() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/tile_cache.hpp:11
#61 0x000000010014fd38 in mbgl::TileCache::~TileCache() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/tile_cache.hpp:11
#62 0x0000000100147f94 in mbgl::Source::~Source() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/source.cpp:124
#63 0x0000000100148050 in mbgl::Source::~Source() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/source.cpp:124
#64 0x00000001002db03c in std::__1::__shared_ptr_emplace<mbgl::Source, std::__1::allocator<mbgl::Source> >::__on_zero_shared() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:3738
#65 0x0000000194a91764 in std::__1::__shared_weak_count::__release_shared() ()
#66 0x000000010024e094 in std::__1::shared_ptr<mbgl::Source>::~shared_ptr() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:4448
#67 0x000000010024e01c in mbgl::util::ptr<mbgl::Source>::~ptr() at /Users/mxn/hub/mapbox-gl-native-2/include/mbgl/util/ptr.hpp:11
#68 0x000000010024dfb4 in mbgl::util::ptr<mbgl::Source>::~ptr() at /Users/mxn/hub/mapbox-gl-native-2/include/mbgl/util/ptr.hpp:11
#69 0x00000001002556ec in std::__1::allocator<mbgl::util::ptr<mbgl::Source> >::destroy(mbgl::util::ptr<mbgl::Source>*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1700
#70 0x00000001002556e4 in void std::__1::allocator_traits<std::__1::allocator<mbgl::util::ptr<mbgl::Source> > >::__destroy<mbgl::util::ptr<mbgl::Source> >(std::__1::integral_constant<bool, true>, std::__1::allocator<mbgl::util::ptr<mbgl::Source> >&, mbgl::util::ptr<mbgl::Source>*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1584
#71 0x00000001002556d4 in void std::__1::allocator_traits<std::__1::allocator<mbgl::util::ptr<mbgl::Source> > >::destroy<mbgl::util::ptr<mbgl::Source> >(std::__1::allocator<mbgl::util::ptr<mbgl::Source> >&, mbgl::util::ptr<mbgl::Source>*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1487
#72 0x00000001002556c4 in std::__1::__vector_base<mbgl::util::ptr<mbgl::Source>, std::__1::allocator<mbgl::util::ptr<mbgl::Source> > >::__destruct_at_end(mbgl::util::ptr<mbgl::Source>*) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:444
#73 0x0000000100255674 in std::__1::__vector_base<mbgl::util::ptr<mbgl::Source>, std::__1::allocator<mbgl::util::ptr<mbgl::Source> > >::clear() [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:368
#74 0x0000000100255660 in std::__1::__vector_base<mbgl::util::ptr<mbgl::Source>, std::__1::allocator<mbgl::util::ptr<mbgl::Source> > >::~__vector_base() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:471
#75 0x0000000100255cf0 in std::__1::vector<mbgl::util::ptr<mbgl::Source>, std::__1::allocator<mbgl::util::ptr<mbgl::Source> > >::~vector() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:477
#76 0x000000010024cae8 in std::__1::vector<mbgl::util::ptr<mbgl::Source>, std::__1::allocator<mbgl::util::ptr<mbgl::Source> > >::~vector() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:477
#77 0x000000010024b7ec in mbgl::Style::~Style() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/style/style.cpp:26
#78 0x000000010024b854 in mbgl::Style::~Style() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/style/style.cpp:26
#79 0x0000000100133038 in std::__1::__shared_ptr_emplace<mbgl::Style, std::__1::allocator<mbgl::Style> >::__on_zero_shared() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:3738
#80 0x0000000194a91764 in std::__1::__shared_weak_count::__release_shared() ()
#81 0x0000000100112170 in std::__1::shared_ptr<mbgl::Style const>::~shared_ptr() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:4448
#82 0x00000001001120f8 in mbgl::util::ptr<mbgl::Style const>::~ptr() at /Users/mxn/hub/mapbox-gl-native-2/include/mbgl/util/ptr.hpp:11
#83 0x0000000100111d7c in mbgl::util::ptr<mbgl::Style const>::~ptr() at /Users/mxn/hub/mapbox-gl-native-2/include/mbgl/util/ptr.hpp:11
#84 0x000000010017481c in mbgl::TileParser::~TileParser() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/tile_parser.cpp:29
#85 0x0000000100174884 in mbgl::TileParser::~TileParser() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/tile_parser.cpp:29
#86 0x00000001001b24f0 in mbgl::VectorTileData::parse() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/vector_tile_data.cpp:55
#87 0x0000000100170ba4 in mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1::operator()() const at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/map/tile_data.cpp:65
#88 0x0000000100170930 in decltype(std::__1::forward<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1&>(fp)(std::__1::forward<>(fp0))) std::__1::__invoke<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1&>(mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1&&&) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base:413
#89 0x000000010017091c in std::__1::__function::__func<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1, std::__1::allocator<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1>, void ()>::operator()() at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1370
#90 0x0000000100130988 in std::__1::function<void ()>::operator()() const at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1756
#91 0x0000000100347350 in mbgl::Worker::workLoop() at /Users/mxn/hub/mapbox-gl-native-2/src/mbgl/util/worker.cpp:55
#92 0x0000000100352270 in decltype(*(std::__1::forward<mbgl::Worker*>(fp0)).*fp(std::__1::forward<>(fp1))) std::__1::__invoke<void (mbgl::Worker::*)(), mbgl::Worker*, void>(void (mbgl::Worker::*&&)(), mbgl::Worker*&&) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base:380
#93 0x000000010035220c in void std::__1::__thread_execute<void (mbgl::Worker::*)(), mbgl::Worker*, 1ul>(std::__1::tuple<void (mbgl::Worker::*)(), mbgl::Worker*>&, std::__1::__tuple_indices<1ul>) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/thread:332
#94 0x00000001003521e4 in void* std::__1::__thread_proxy<std::__1::tuple<void (mbgl::Worker::*)(), mbgl::Worker*> >(void*) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/thread:342
#95 0x0000000195b13dc8 in _pthread_body ()
#96 0x0000000195b13d24 in _pthread_start ()
@1ec5 1ec5 added iOS Mapbox Maps SDK for iOS crash labels Apr 20, 2015
@jfirebaugh
Copy link
Contributor

Same root cause as #1277.

@jfirebaugh jfirebaugh self-assigned this Apr 20, 2015
@jfirebaugh jfirebaugh added this to the iOS Beta 1 milestone Apr 21, 2015
jfirebaugh added a commit that referenced this issue Apr 24, 2015
@friedbunny
Copy link
Contributor

This crash happened to me while I was zooming around, not after leaving/reopening the app. Appears similar, if not quite exactly the same. (Accidentally posted this in #1277 just now.)

Assertion failed: (env), function Get, file /Users/jason/Documents/Mapbox/mapbox-gl-native/src/mbgl/map/environment.cpp, line 103.

* thread #24: tid = 0x1045a7, 0x363bbdf0 libsystem_kernel.dylib`__pthread_kill + 8, name = 'Worker', stop reason = signal SIGABRT
    frame #0: 0x363bbdf0 libsystem_kernel.dylib`__pthread_kill + 8
    frame #1: 0x3643acc6 libsystem_pthread.dylib`pthread_kill + 62
    frame #2: 0x36357908 libsystem_c.dylib`abort + 76
    frame #3: 0x36337368 libsystem_c.dylib`__assert_rtn + 92
  * frame #4: 0x00094b26 Mapbox GL`mbgl::Environment::Get() + 102 at environment.cpp:103
    frame #5: 0x0007edee Mapbox GL`mbgl::VertexArrayObject::~VertexArrayObject(this=0x16d91eb4) + 174 at vao.cpp:15
    frame #6: 0x0007ee84 Mapbox GL`mbgl::VertexArrayObject::~VertexArrayObject(this=0x16d91eb4) + 32 at vao.cpp:11
    frame #7: 0x000fd40a Mapbox GL`mbgl::DebugBucket::~DebugBucket(this=0x16d91eac) + 54 at debug_bucket.hpp:14
    frame #8: 0x000fcf34 Mapbox GL`mbgl::DebugBucket::~DebugBucket(this=0x16d91eac) + 32 at debug_bucket.hpp:14
    frame #9: 0x000f9232 Mapbox GL`mbgl::TileData::~TileData(this=0x16d91e5c) + 146 at tile_data.cpp:24
    frame #10: 0x0012e100 Mapbox GL`mbgl::VectorTileData::~VectorTileData(this=0x16d91e5c) + 244 at vector_tile_data.cpp:32
    frame #11: 0x0012e1e4 Mapbox GL`mbgl::VectorTileData::~VectorTileData(this=0x16d91e5c) + 32 at vector_tile_data.cpp:30
    frame #12: 0x000ea28c Mapbox GL`std::__1::__shared_ptr_emplace<mbgl::VectorTileData, std::__1::allocator<mbgl::VectorTileData> >::__on_zero_shared(this=0x16d91e50) + 40 at memory:3738
    frame #13: 0x35671730 libc++.1.dylib`std::__1::__shared_weak_count::__release_shared() + 48
    frame #14: 0x000ee4ea Mapbox GL`std::__1::shared_ptr<mbgl::TileData>::~shared_ptr(this=0x1c33598c) + 46 at memory:4448
    frame #15: 0x000ee700 Mapbox GL`mbgl::util::ptr<mbgl::TileData>::~ptr(this=0x1c33598c) + 36 at ptr.hpp:11
    frame #16: 0x000e4834 Mapbox GL`mbgl::util::ptr<mbgl::TileData>::~ptr(this=0x1c33598c) + 32 at ptr.hpp:11
    frame #17: 0x000fce54 Mapbox GL`mbgl::TileData::reparse(this=0x1c33598c)>)::$_1::~$_1() + 32 at tile_data.cpp:63
    frame #18: 0x000f9d2c Mapbox GL`mbgl::TileData::reparse(this=0x1c33598c)>)::$_1::~$_1() + 32 at tile_data.cpp:63
    frame #19: 0x000fb924 Mapbox GL`std::__1::__libcpp_compressed_pair_imp<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1, std::__1::allocator<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1>, 2u>::~__libcpp_compressed_pair_imp(this=0x1c33598c) + 32 at memory:2121
    frame #20: 0x000fb8e4 Mapbox GL`std::__1::__compressed_pair<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1, std::__1::allocator<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1> >::~__compressed_pair(this=0x1c33598c) + 36 at memory:2301
    frame #21: 0x000fb8a0 Mapbox GL`std::__1::__compressed_pair<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1, std::__1::allocator<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1> >::~__compressed_pair(this=0x1c33598c) + 32 at memory:2301
    frame #22: 0x000fb5a0 Mapbox GL`std::__1::__function::__func<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1, std::__1::allocator<mbgl::TileData::reparse(mbgl::Worker&, std::__1::function<void ()>)::$_1>, void ()>::destroy(this=0x1c335988) + 32 at functional:1353
    frame #23: 0x000ba85a Mapbox GL`std::__1::function<void ()>::~function(this=0x1c335988) + 50 at functional:1706
    frame #24: 0x000d6b78 Mapbox GL`std::__1::function<void ()>::~function(this=0x1c335988) + 32 at functional:1704
    frame #25: 0x00262f08 Mapbox GL`std::__1::__tuple_leaf<1ul, std::__1::function<void ()>, false>::~__tuple_leaf(this=0x1c335988) + 32 at tuple:180
    frame #26: 0x00262ec6 Mapbox GL`std::__1::__tuple_impl<std::__1::__tuple_indices<0ul, 1ul>, mbgl::Worker::Impl*, std::__1::function<void ()> >::~__tuple_impl(this=0x1c335980) + 38 at tuple:398
    frame #27: 0x00262e80 Mapbox GL`std::__1::__tuple_impl<std::__1::__tuple_indices<0ul, 1ul>, mbgl::Worker::Impl*, std::__1::function<void ()> >::~__tuple_impl(this=0x1c335980) + 32 at tuple:398
    frame #28: 0x00262e40 Mapbox GL`std::__1::tuple<mbgl::Worker::Impl*, std::__1::function<void ()> >::~tuple(this=0x1c335980) + 32 at tuple:501
    frame #29: 0x00262e00 Mapbox GL`std::__1::tuple<mbgl::Worker::Impl*, std::__1::function<void ()> >::~tuple(this=0x1c335980) + 32 at tuple:501
    frame #30: 0x00262dbe Mapbox GL`std::__1::__bind<void (mbgl::Worker::Impl::*&)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&>::~__bind(this=0x1c335978) + 38 at functional:2027
    frame #31: 0x00262d78 Mapbox GL`std::__1::__bind<void (mbgl::Worker::Impl::*&)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&>::~__bind(this=0x1c335978) + 32 at functional:2027
    frame #32: 0x002631c4 Mapbox GL`void mbgl::util::RunLoop::invokeWithResult<std::__1::__bind<void (mbgl::Worker::Impl::*&)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&> >(this=0x1c335978)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&>&&, std::__1::function<void ()>)::'lambda'()::~'lambda'()() + 48 at run_loop.hpp:60
    frame #33: 0x00263174 Mapbox GL`void mbgl::util::RunLoop::invokeWithResult<std::__1::__bind<void (mbgl::Worker::Impl::*&)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&> >(this=0x1c335978)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&>&&, std::__1::function<void ()>)::'lambda'()::~'lambda'()() + 32 at run_loop.hpp:60
    frame #34: 0x002642e6 Mapbox GL`mbgl::util::RunLoop::Invoker<void mbgl::util::RunLoop::invokeWithResult<std::__1::__bind<void (mbgl::Worker::Impl::*&)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&> >(std::__1::__bind<void (mbgl::Worker::Impl::*&)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&>&&, std::__1::function<void ()>)::'lambda'()>::~Invoker(this=0x1c335970) + 54 at run_loop.hpp:80
    frame #35: 0x00264248 Mapbox GL`mbgl::util::RunLoop::Invoker<void mbgl::util::RunLoop::invokeWithResult<std::__1::__bind<void (mbgl::Worker::Impl::*&)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&> >(std::__1::__bind<void (mbgl::Worker::Impl::*&)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&>&&, std::__1::function<void ()>)::'lambda'()>::~Invoker(this=0x1c335970) + 32 at run_loop.hpp:80
    frame #36: 0x00264288 Mapbox GL`mbgl::util::RunLoop::Invoker<void mbgl::util::RunLoop::invokeWithResult<std::__1::__bind<void (mbgl::Worker::Impl::*&)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&> >(std::__1::__bind<void (mbgl::Worker::Impl::*&)(std::__1::function<void ()>), mbgl::Worker::Impl*&, std::__1::function<void ()>&>&&, std::__1::function<void ()>)::'lambda'()>::~Invoker(this=0x1c335970) + 32 at run_loop.hpp:80
    frame #37: 0x0025a5ea Mapbox GL`std::__1::deque<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> >, std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > > >::pop_front() [inlined] std::__1::default_delete<mbgl::util::RunLoop::Message>::operator(this=0x1d2fd600, __ptr=0x1c335970)(mbgl::util::RunLoop::Message*) const + 218 at memory:2431
    frame #38: 0x0025a5da Mapbox GL`std::__1::deque<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> >, std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > > >::pop_front() + 60 at memory:2630
    frame #39: 0x0025a59e Mapbox GL`std::__1::deque<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> >, std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > > >::pop_front() + 6 at memory:2598
    frame #40: 0x0025a598 Mapbox GL`std::__1::deque<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> >, std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > > >::pop_front() [inlined] std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> >::~unique_ptr(this=0x1d2fd600) + 4 at memory:2598
    frame #41: 0x0025a594 Mapbox GL`std::__1::deque<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> >, std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > > >::pop_front() [inlined] std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > >::destroy(this=0x049c453c, __p=0x1d2fd600) + 6 at memory:1700
    frame #42: 0x0025a58e Mapbox GL`std::__1::deque<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> >, std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > > >::pop_front() [inlined] void std::__1::allocator_traits<std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > > >::__destroy<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > >((null)=std::__1::true_type at 0x049c4400, __a=0x049c453c, __p=0x1d2fd600) + 8 at memory:1584
    frame #43: 0x0025a586 Mapbox GL`std::__1::deque<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> >, std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > > >::pop_front() [inlined] void std::__1::allocator_traits<std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > > >::destroy<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > >(__a=0x049c453c, __p=0x1d2fd600) + 8 at memory:1487
    frame #44: 0x0025a57e Mapbox GL`std::__1::deque<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> >, std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > > >::pop_front(this=0x049c4528) + 110 at deque:2553
    frame #45: 0x00258528 Mapbox GL`mbgl::util::RunLoop::process() [inlined] std::__1::queue<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> >, std::__1::deque<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> >, std::__1::allocator<std::__1::unique_ptr<mbgl::util::RunLoop::Message, std::__1::default_delete<mbgl::util::RunLoop::Message> > > > >::pop(this=0x049c4528) + 6 at queue:298
    frame #46: 0x00258522 Mapbox GL`mbgl::util::RunLoop::process(this=0x049c9ca0) + 474 at run_loop.cpp:23
    frame #47: 0x0025b1aa Mapbox GL`std::__1::__function::__func<std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*>, std::__1::allocator<std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*> >, void ()>::operator()() [inlined] decltype(__f=0x049c9cf4, __a0=0x049c9cfc)).*fp(std::__1::forward<>(fp1))) std::__1::__invoke<void (mbgl::util::RunLoop::*&)(), mbgl::util::RunLoop*&, void>(void (mbgl::util::RunLoop::*&&&)(), mbgl::util::RunLoop*&&&) + 68 at __functional_base:380
    frame #48: 0x0025b166 Mapbox GL`std::__1::__function::__func<std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*>, std::__1::allocator<std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*> >, void ()>::operator()() [inlined] std::__1::__bind_return<void (mbgl::util::RunLoop::*)(), std::__1::tuple<mbgl::util::RunLoop*>, std::__1::tuple<>, _is_valid_bind_return<void (mbgl::util::RunLoop::*)(), std::__1::tuple<mbgl::util::RunLoop*>, std::__1::tuple<> >::value>::type std::__1::__apply_functor<void (__f=0x049c9cf4, __bound_args=0x049c9cfc, (null)=__tuple_indices<0> at 0x049c464c, __args=0x049c466c)(), std::__1::tuple<mbgl::util::RunLoop*>, 0ul, std::__1::tuple<> >(void (mbgl::util::RunLoop::*&)(), std::__1::tuple<mbgl::util::RunLoop*>&, std::__1::__tuple_indices<0ul>, std::__1::tuple<>&&) + 20 at functional:2023
    frame #49: 0x0025b152 Mapbox GL`std::__1::__function::__func<std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*>, std::__1::allocator<std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*> >, void ()>::operator()() [inlined] std::__1::__bind_return<void (mbgl::util::RunLoop::*)(), std::__1::tuple<mbgl::util::RunLoop*>, std::__1::tuple<>, _is_valid_bind_return<void (mbgl::util::RunLoop::*)(), std::__1::tuple<mbgl::util::RunLoop*>, std::__1::tuple<> >::value>::type std::__1::__bind<void (this=0x049c9cf4)(), mbgl::util::RunLoop*>::operator()<>() + 14 at functional:2086
    frame #50: 0x0025b144 Mapbox GL`std::__1::__function::__func<std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*>, std::__1::allocator<std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*> >, void ()>::operator()() [inlined] decltype(__f=0x049c9cf4)(), mbgl::util::RunLoop*>&>(fp)(std::__1::forward<>(fp0))) std::__1::__invoke<std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*>&>(std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*>&&&) + 4 at __functional_base:413
    frame #51: 0x0025b140 Mapbox GL`std::__1::__function::__func<std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*>, std::__1::allocator<std::__1::__bind<void (mbgl::util::RunLoop::*)(), mbgl::util::RunLoop*> >, void ()>::operator(this=0x049c9cf0)() + 32 at functional:1370
    frame #52: 0x000da34c Mapbox GL`std::__1::function<void ()>::operator(this=0x049c9cf0)() const + 116 at functional:1756
    frame #53: 0x000da2bc Mapbox GL`uv::async::async_cb(a=0x16ef5d90, (null)=0) + 36 at uv_detail.hpp:113
    frame #54: 0x002c1ab2 Mapbox GL`uv__async_event(loop=0x16ef57f0, w=0x16ef58c8, nevents=1) + 118 at async.c:80
    frame #55: 0x002c1d20 Mapbox GL`uv__async_io(loop=0x16ef57f0, w=0x16ef58cc, events=1) + 164 at async.c:156
    frame #56: 0x002d309c Mapbox GL`uv__io_poll(loop=0x16ef57f0, timeout=-1) + 2076 at kqueue.c:233
    frame #57: 0x002c2182 Mapbox GL`uv_run(loop=0x16ef57f0, mode=UV_RUN_DEFAULT) + 122 at core.c:317
    frame #58: 0x0025a4f2 Mapbox GL`uv::loop::run(this=0x049c9ce4) + 34 at uv_detail.hpp:62
    frame #59: 0x002587ea Mapbox GL`mbgl::util::RunLoop::run(this=0x049c9ca0) + 134 at run_loop.cpp:30
    frame #60: 0x00262694 Mapbox GL`void mbgl::util::Thread<mbgl::Worker::Impl>::run<std::__1::tuple<> >(this=0x16ef55e0, params=0x042d2810, (null)=index_sequence<> at 0x049c9c94)::index_sequence<>) + 188 at thread.hpp:135
    frame #61: 0x00266ef4 Mapbox GL`mbgl::util::Thread<mbgl::Worker::Impl>::Thread<>(this=0x16ef56c0)::'lambda'()::operator()() const + 144 at thread.hpp:118
    frame #62: 0x00266d36 Mapbox GL`std::__1::__thread_proxy<std::__1::tuple<mbgl::util::Thread<mbgl::Worker::Impl>::Thread<>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::'lambda'()> >(void*, void*) [inlined] std::__1::__invoke<mbgl::util::Thread<mbgl::Worker::Impl>::Thread<>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::'lambda'()>(__f=0x16ef56c0)::'lambda'()>(fp)(std::__1::forward<>(fp0))), mbgl::util::Thread<mbgl::Worker::Impl>::Thread<>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::'lambda'()&&) + 10 at __functional_base:413
    frame #63: 0x00266d2c Mapbox GL`std::__1::__thread_proxy<std::__1::tuple<mbgl::util::Thread<mbgl::Worker::Impl>::Thread<>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::'lambda'()> >(void*, void*) [inlined] _ZNSt3__116__thread_executeIZN4mbgl4util6ThreadINS1_6Worker4ImplEEC1IJEEERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEDpOT_EUlvE_JEJEEEvRNS_5tupleIJT_DpT0_EEENS_15__tuple_indicesIJXspT1_EEEE(__t=0x16ef56c0, (null)=__tuple_indices<> at 0x049c9eec) + 8 at thread:332
    frame #64: 0x00266d24 Mapbox GL`std::__1::__thread_proxy<std::__1::tuple<mbgl::util::Thread<mbgl::Worker::Impl>::Thread<>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::'lambda'()> >(__vp=0x16ef56c0) + 252 at thread:342
    frame #65: 0x36439e22 libsystem_pthread.dylib`_pthread_body + 138
    frame #66: 0x36439d96 libsystem_pthread.dylib`_pthread_start + 118
    frame #67: 0x36437b20 libsystem_pthread.dylib`thread_start + 8

jfirebaugh added a commit that referenced this issue Apr 27, 2015
jfirebaugh added a commit that referenced this issue Apr 27, 2015
jfirebaugh added a commit that referenced this issue Apr 27, 2015
It's possible that the work callback can outlive the after callback,
since work callback destruction and after callback execution happen in
two different threads. This could account for the crash seen in
#1309 (comment)
@jfirebaugh
Copy link
Contributor

A potential fix for the latter crash is in f5ca50f.

jfirebaugh added a commit that referenced this issue Apr 28, 2015
jfirebaugh added a commit that referenced this issue Apr 28, 2015
It's possible that the work callback can outlive the after callback,
since work callback destruction and after callback execution happen in
two different threads. This could account for the crash seen in
#1309 (comment)
jfirebaugh added a commit that referenced this issue Apr 28, 2015
jfirebaugh added a commit that referenced this issue Apr 28, 2015
It's possible that the work callback can outlive the after callback,
since work callback destruction and after callback execution happen in
two different threads. This could account for the crash seen in
#1309 (comment)
jfirebaugh added a commit that referenced this issue Apr 28, 2015
It's possible that the work callback can outlive the after callback,
since work callback destruction and after callback execution happen in
two different threads. This could account for the crash seen in
#1309 (comment)
@jfirebaugh
Copy link
Contributor

This should be fixed #1065.

@jfirebaugh
Copy link
Contributor

Just reproduced this on current master.

@jfirebaugh jfirebaugh reopened this May 1, 2015
jfirebaugh added a commit that referenced this issue May 1, 2015
Even though we only bind the shared_ptr in the after callback, the
worker thread was still copying the callback and therefore gaining
a shared reference. Here we try to eliminate the copies.
@jfirebaugh
Copy link
Contributor

Nope.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
crash iOS Mapbox Maps SDK for iOS
Projects
None yet
Development

No branches or pull requests

3 participants