Skip to content
This repository has been archived by the owner on Mar 28, 2024. It is now read-only.

[BUG-230163] Viewer crashes when creating an experience: (!inserted)Unable to add pool named "ExpCache" to map. FATAL! #7895

Closed
1 task
sl-service-account opened this issue Feb 1, 2021 · 3 comments

Comments

@sl-service-account
Copy link

sl-service-account commented Feb 1, 2021

Steps To Reproduce

  • This is a bit of a pain to reproduce because you need a premium account that has never created an experience before.

  • Note that if you have a premium account with an experience on Agni already, you will be able to create an experience on Aditi if you didn't already do so.

  • For debugging purposes, Kyle Linden can set a basic account to be premium on Aditi so you can run through the repro steps there.

  • Use a premium account that has never created an experience before.

  • Me -> Experiences -> Owned -> Click "Acquire an experience"

  • Viewer might crash here!

  • If the viewer doesn't crash here, fill out the experience fields (name of experience etc) and save it.

  • Then left-click the new experience listed in the Owned tab of experiences floater.

  • Viewer will crash to desktop if it didn't crash earlier.

    Observed Behaviour

  • I have only managed to reproduce this crash on Firestorm Viewer so far, but because of the difficulty in having access to premium accounts without an experience, I have only been able to test this crash once on the LL Viewer. Ansariel Hiller (Firestorm dev) said this crash is also very likely to reproduce on the LL viewer too, so I am filing it with the info I have from Firestorm and Ansariel will explain why this will reproduce on the LL Viewer too.

  • Firestorm.log - Log attached from a session I reproduced this crash after clicking the "Acquire an experience" button on Firestorm.

  • Polysail also reproduced this crash on both Agni & Aditi when creating her first experience using a Firestorm nightly.

Callstack from Firestorm

Unhandled exception thrown: write access violation.
**make_me_crash** was nullptr.

>	Firestorm-Fizzlefirex64.exe!LLError::crashAndLoop(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & message) Line 1562	C++
 	Firestorm-Fizzlefirex64.exe!errorCallback(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & error_string) Line 2630	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!boost::function1<void,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &>::operator()(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &) Line 763	C++
 	Firestorm-Fizzlefirex64.exe!LLError::Log::flush(std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char> > * out, const LLError::CallSite & site) Line 1488	C++
 	Firestorm-Fizzlefirex64.exe!LLCoprocedureManager::initializePool(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & poolName) Line 173	C++
 	Firestorm-Fizzlefirex64.exe!LLCoprocedureManager::enqueueCoprocedure(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & pool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & name, boost::function<void __cdecl(boost::shared_ptr<LLCoreHttpUtil::HttpCoroutineAdapter> &,LLUUID const &)> proc) Line 185	C++
 	Firestorm-Fizzlefirex64.exe!LLExperienceCache::requestExperiences() Line 365	C++
 	Firestorm-Fizzlefirex64.exe!LLExperienceCache::idleCoro() Line 417	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!boost::function0<void>::operator()() Line 763	C++
 	Firestorm-Fizzlefirex64.exe!LLCoros::toplevel(std::basic_string<char,std::char_traits<char>,std::allocator<char> > name, boost::function<void __cdecl(void)> callable) Line 307	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!LLCoros::launch::__l2::<lambda_d6e49534f39110aebbeb2b8ce9d834ce>::operator()() Line 245	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!boost::context::detail::invoke(LLCoros::launch::__l2::<lambda_d6e49534f39110aebbeb2b8ce9d834ce> &&) Line 41	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!boost::context::detail::apply_impl(LLCoros::launch::__l2::<lambda_d6e49534f39110aebbeb2b8ce9d834ce> &&) Line 46	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!boost::context::detail::apply(LLCoros::launch::__l2::<lambda_d6e49534f39110aebbeb2b8ce9d834ce> &&) Line 59	C++
 	Firestorm-Fizzlefirex64.exe!boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> >::run_(boost::context::fiber && c) Line 440	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!std::_Invoker_pmf_pointer::_Call(boost::context::fiber(boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> >::*)(boost::context::fiber &&) _Pmf, boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> > * &) Line 80	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!std::invoke(boost::context::fiber(boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> >::*)(boost::context::fiber &&) &) Line 80	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!std::_Invoker_ret<std::_Unforced,0>::_Call(boost::context::fiber(boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> >::*)(boost::context::fiber &&) &) Line 80	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!std::_Call_binder(std::_Invoker_ret<std::_Unforced,0>) Line 1858	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!std::_Binder<std::_Unforced,boost::context::fiber (__cdecl boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> >::*)(boost::context::fiber &&),boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> > *,std::_Ph<1> const &>::operator()(boost::context::fiber &&) Line 1914	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!boost::context::detail::invoke(std::_Binder<std::_Unforced,boost::context::fiber (__cdecl boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> >::*)(boost::context::fiber &&),boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> > *,std::_Ph<1> const &> &) Line 41	C++
 	[Inline Frame] Firestorm-Fizzlefirex64.exe!boost::context::detail::fiber_record<boost::context::fiber,boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>,std::_Binder<std::_Unforced,boost::context::fiber (__cdecl boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> >::*)(boost::context::fiber &&),boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> > *,std::_Ph<1> const &> >::run(void *) Line 141	C++
 	Firestorm-Fizzlefirex64.exe!boost::context::detail::fiber_entry<boost::context::detail::fiber_record<boost::context::fiber,boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>,std::_Binder<std::_Unforced,boost::context::fiber (__cdecl boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> >::*)(boost::context::fiber &&),boost::fibers::worker_context<<lambda_d6e49534f39110aebbeb2b8ce9d834ce> > *,std::_Ph<1> const &> > >(boost::context::detail::transfer_t t) Line 80	C++
 	[External Code]	

Attachments

Links

Duplicates

Original Jira Fields
Field Value
Issue BUG-230163
Summary Viewer crashes when creating an experience: (!inserted)Unable to add pool named "ExpCache" to map. FATAL!
Type Bug
Priority Unset
Status Closed
Resolution Triaged
Reporter Whirly Fizzle (whirly.fizzle)
Created at 2021-02-01T21:18:38Z
Updated at 2021-07-19T18:16:19Z
{
  'Build Id': 'unset',
  'Business Unit': ['Platform'],
  'Date of First Response': '2021-02-01T15:53:46.680-0600',
  "Is there anything you'd like to add?": '...',
  'ReOpened Count': 0.0,
  'Severity': 'Unset',
  'System': 'SL Viewer',
  'Target Viewer Version': 'viewer-development',
  'What just happened?': '...',
  'What were you doing when it happened?': '...',
  'What were you expecting to happen instead?': '...',
  'Where': 'Any region, Agni or Aditi.',
}
@sl-service-account
Copy link
Author

Whirly Fizzle commented at 2021-02-01T21:37:43Z

Notes from Ansariel - will remove when Ansa adds her explanation.

This is a crash when trying to add a coroutine pool. pool probably already exists and is attempted to get created a second time. could be timing issue and has already happened before with the asset storage pool.
Maybe you were just lucky it didn't happen on the LL viewer yet.
It's most likely a timing/threading issue where 2 threads try to create the coroutine pool.
Probably a smart idea to create the pool during singleton initialization of LLExperienceCache.

@sl-service-account
Copy link
Author

Kyle Linden commented at 2021-02-01T21:53:47Z

Nice catch. Thanks!

@sl-service-account
Copy link
Author

AndreyK ProductEngine commented at 2021-02-08T21:02:44Z, updated at 2021-02-08T21:03:01Z

Maybe you were just lucky it didn't happen on the LL viewer yet.
It does happen, it is just very rare. last time I checked it was a single crash during 50~60K hours of maint viewer.

could be timing issue and has already happened before with the asset storage pool.
it did not exist yet, but was in progress of bing created and then creating starts second time.

Between it being very rare and being caused by 'threading' for all types of pools (we just have workarounds for other ones) I was planing on removing initializePool() from enqueueCoprocedure() while adding manual initialization elsewhere, thus sidestapping this specific issue and other potential ones, like "AIS". There is likely a similar issue waiting to happen with "AIS". I have it in my to-do list, it just never was a high priority.

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

No branches or pull requests

1 participant