Uploaded image for project: 'Snowstorm'
  1. Snowstorm
  2. STORM-1352

[crashhunters] crash in LLNearbyChatScreenChannel::showToastsBottom()

    XMLWordPrintableJSON

    Details

    • Type: Defect
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: crash horde
    • Environment:
      Windows
    • Approvals:
      Code Review, Product Owner
    • Acceptance Criteria:
      nearby chat toast functions as expected and does not crash the viewer.
    • Test Plan:
      Hide

      Notes from code review:
      Vadim ProductEngine:
      ---------
      Apparently, a nearby chat toast got somehow destroyed while still remaining in the list of active toasts.
      Attempt to sort active toasts in showToastsBottom() then triggered the crash.

      I don't know how to reproduce the crash, i.e. force destroying a toast in a way that its onClose() method (which would remove references to the toast) isn't called.
      So we'll just remove references to the toast whenever it's destroyed.
      -----------

      • Verify that chat toasts and notifications function as expected.
      Show
      Notes from code review: Vadim ProductEngine: --------- Apparently, a nearby chat toast got somehow destroyed while still remaining in the list of active toasts. Attempt to sort active toasts in showToastsBottom() then triggered the crash. I don't know how to reproduce the crash, i.e. force destroying a toast in a way that its onClose() method (which would remove references to the toast) isn't called. So we'll just remove references to the toast whenever it's destroyed. ----------- Verify that chat toasts and notifications function as expected.
    • Root Cause:
      Viewer - Viewer

      Description

      New crasher in 2.4 beta 1

      https://osiris.lindenlab.com/viewer_crash_browser/index.php?filter_id=23761

      [0] std::_Insertion_sort,std::allocator > >,int (*)(LLHandle,LLHandle)>(std::_Vector_iterator,std::allocator > >,std::_Vector_iterator,std::allocator > >,int (*)(LLHandle,LLHandle)) [secondlife-bin algorithm]
      [1] std::_Sort,std::allocator > >,int,int (*)(LLHandle,LLHandle)>(std::_Vector_iterator,std::allocator > >,std::_Vector_iterator,std::allocator > >,int,int (*)(LLHandle,LLHandle)) [secondlife-bin algorithm]
      [2] LLNearbyChatScreenChannel::showToastsBottom() [secondlife-bin llnearbychathandler.cpp]
      [3] LLNearbyChatScreenChannel::arrangeToasts() [secondlife-bin llnearbychathandler.cpp]
      [4] LLNearbyChatScreenChannel::onToastFade(LLNotificationsUI::LLToast *) [secondlife-bin llnearbychathandler.cpp]
      [5] boost::detail::function::void_function_obj_invoker1,boost::_bi::list2,boost::arg<1> > >,void,LLNotificationsUI::LLToast *>::invoke(boost::detail::function::function_buffer &,LLNotificationsUI::LLToast *) [secondlife-bin function_template.hpp]
      [6] boost::function1::operator()(LLNotificationsUI::LLToast *) [secondlife-bin function_template.hpp]
      [7] boost::signals2::detail::slot_call_iterator_t,int,std::less,boost::function,boost::function,boost::signals2::mutex>::slot_invoker,std::list >,boost::signals2::slot1 >,boost::signals2::mutex> >,std::allocator >,boost::signals2::slot1 >,boost::signals2::mutex> > > >::_Iterator<0>,boost::signals2::detail::connection_body >,boost::signals2::slot1 >,boost::signals2::mutex> >::dereference() [secondlife-bin slot_call_iterator.hpp]
      [8] boost::signals2::optional_last_value::operator(),int,std::less,boost::function,boost::function,boost::signals2::mutex>::slot_invoker,std::list >,boost::signals2::slot1 >,boost::signals2::mutex> >,std::allocator >,boost::signals2::slot1 >,boost::signals2::mutex> > > >::_Iterator<0>,boost::signals2::detail::connection_body >,boost::signals2::slot1 >,boost::signals2::mutex> > >(boost::signals2::detail::slot_call_iterator_t,int,std::less,boost::function,boost::function,boost::signals2::mutex>::slot_invoker,std::list >,boost::signals2::slot1 >,boost::signals2::mutex> >,std::allocator >,boost::signals2::slot1 >,boost::signals2::mutex> > > >::_Iterator<0>,boost::signals2::detail::connection_body >,boost::signals2::slot1 >,boost::signals2::mutex> >,boost::signals2::detail::slot_call_iterator_t,int,std::less,boost::function,boost::function,boost::signals2::mutex>::slot_invoker,std::list >,boost::signals2::slot1 >,boost::signals2::mutex> >,std::allocator >,boost::signals2::slot1 >,boost::signals2::mutex> > > >::_Iterator<0>,boost::signals2::detail::connection_body >,boost::signals2::slot1 >,boost::signals2::mutex> >) [secondlife-bin optional_last_value.hpp]
      [9] boost::signals2::detail::signal1_impl,int,std::less,boost::function,boost::function,boost::signals2::mutex>::operator()(LLNotificationsUI::LLToast *) [secondlife-bin signal_template.hpp]
      [10] LLNotificationsUI::LLToast::hide() [secondlife-bin lltoast.cpp]
      [11] LLNotificationsUI::LLToastLifeTimer::tick() [secondlife-bin lltoast.cpp]
      [12] LLAppViewer::idle() [secondlife-bin llappviewer.cpp]
      [13] LLAppViewer::mainLoop() [secondlife-bin llappviewer.cpp]
      [14] WinMain [secondlife-bin llappviewerwin32.cpp]

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              brad.linden Brad Linden
              Extended Group Visibility:
              jira-users
              Prod Owner Approved:
              Squire Linden
            • Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 3 hours
                3h