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

Segfault in mbgl::SpriteLoader::emitSpriteLoadedIfComplete #16250

Closed
springmeyer opened this issue Feb 28, 2020 · 0 comments · Fixed by #16255
Closed

Segfault in mbgl::SpriteLoader::emitSpriteLoadedIfComplete #16250

springmeyer opened this issue Feb 28, 2020 · 0 comments · Fixed by #16255
Assignees

Comments

@springmeyer
Copy link
Contributor

I'm seeing a new crash in gl-native after upgrading the latest master. I've bisected the codebase and found that the commit which triggers the crash to start is 9cb19b9

I've replicated on both Linux and OS X.

The segfault is in a mbgl worker thread:

0   mbgl-binding                     	0x00000001059e03f5 std::__1::unique_ptr<mbgl::util::AsyncTask::Impl, std::__1::default_delete<mbgl::util::AsyncTask::Impl> >::operator->() const + 21 (memory:2621)
1   mbgl-binding                     	0x00000001059e03c5 mbgl::util::AsyncTask::send() + 21 (async_task.cpp:62)
2   mbgl-binding                     	0x00000001059e4720 mbgl::util::RunLoop::wake() + 48 (run_loop.cpp:134)
3   mbgl-binding                     	0x00000001059e694c mbgl::util::RunLoop::push(mbgl::util::RunLoop::Priority, std::__1::shared_ptr<mbgl::WorkTask>) + 188 (run_loop.hpp:97)
4   mbgl-binding                     	0x00000001059e685b void mbgl::util::RunLoop::invoke<std::__1::function<void ()> >(mbgl::util::RunLoop::Priority, std::__1::function<void ()>&&) + 91 (run_loop.hpp:58)
5   mbgl-binding                     	0x00000001059e67f2 void mbgl::util::RunLoop::invoke<std::__1::function<void ()> >(std::__1::function<void ()>&&) + 50 (run_loop.hpp:65)
6   mbgl-binding                     	0x00000001059e5358 mbgl::util::RunLoop::schedule(std::__1::function<void ()>) + 40 (run_loop.hpp:76)
7   mbgl-binding                     	0x0000000105387191 void mbgl::Scheduler::scheduleAndReplyValue<mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3>(mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2 const&, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3 const&, mapbox::base::WeakPtr<mbgl::Scheduler>)::'lambda'()::operator()() const + 289 (scheduler.hpp:98)
8   mbgl-binding                     	0x000000010538704d decltype(std::__1::forward<mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2>(fp)()) std::__1::__invoke<void mbgl::Scheduler::scheduleAndReplyValue<mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3>(mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2 const&, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3 const&, mapbox::base::WeakPtr<mbgl::Scheduler>)::'lambda'()&>(mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2&&) + 29 (type_traits:4353)
9   mbgl-binding                     	0x0000000105386ffd void std::__1::__invoke_void_return_wrapper<void>::__call<void mbgl::Scheduler::scheduleAndReplyValue<mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3>(mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2 const&, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3 const&, mapbox::base::WeakPtr<mbgl::Scheduler>)::'lambda'()&>(void mbgl::Scheduler::scheduleAndReplyValue<mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3>(mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2 const&, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3 const&, mapbox::base::WeakPtr<mbgl::Scheduler>)::'lambda'()&) + 29 (__functional_base:350)
10  mbgl-binding                     	0x0000000105386fcd std::__1::__function::__alloc_func<void mbgl::Scheduler::scheduleAndReplyValue<mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3>(mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2 const&, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3 const&, mapbox::base::WeakPtr<mbgl::Scheduler>)::'lambda'(), std::__1::allocator<void mbgl::Scheduler::scheduleAndReplyValue<mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3>(mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2 const&, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3 const&, mapbox::base::WeakPtr<mbgl::Scheduler>)::'lambda'()>, void ()>::operator()() + 29 (functional:1527)
11  mbgl-binding                     	0x0000000105385d49 std::__1::__function::__func<void mbgl::Scheduler::scheduleAndReplyValue<mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3>(mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2 const&, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3 const&, mapbox::base::WeakPtr<mbgl::Scheduler>)::'lambda'(), std::__1::allocator<void mbgl::Scheduler::scheduleAndReplyValue<mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3>(mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_2 const&, mbgl::SpriteLoader::emitSpriteLoadedIfComplete()::$_3 const&, mapbox::base::WeakPtr<mbgl::Scheduler>)::'lambda'()>, void ()>::operator()() + 25 (functional:1651)
12  mbgl-binding                     	0x0000000105975955 std::__1::__function::__value_func<void ()>::operator()() const + 53 (functional:1799)
13  mbgl-binding                     	0x0000000105974d65 std::__1::function<void ()>::operator()() const + 21 (functional:2347)
14  mbgl-binding                     	0x0000000105740db0 mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0::operator()() const + 736 (thread_pool.cpp:44)
15  mbgl-binding                     	0x0000000105740a8d decltype(std::__1::forward<mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0>(fp)()) std::__1::__invoke<mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0>(mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0&&) + 29 (type_traits:4353)
16  mbgl-binding                     	0x00000001057409f5 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0>(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>&, std::__1::__tuple_indices<>) + 37 (thread:343)
17  mbgl-binding                     	0x0000000105740296 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*) + 118 (thread:352)
18  libsystem_pthread.dylib       	0x00007fff67db6e65 _pthread_start + 148
19  libsystem_pthread.dylib       	0x00007fff67db283b thread_start + 15

One somewhat unique thing about my usage of mbgl-native is that I'm using a sync filesource. My sync filesource also uncovered this bug previously: #15514

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

Successfully merging a pull request may close this issue.

2 participants