This repository has been archived by the owner on Aug 8, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Assertion failure after backgrounding app during animation — Environment::abandonVAO() #1309
Comments
Same root cause as #1277. |
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 |
2 tasks
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)
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)
This was referenced Apr 28, 2015
Closed
This should be fixed #1065. |
Just reproduced this on current master. |
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.
Nope. |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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:
The text was updated successfully, but these errors were encountered: