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

[BUG-214635] Crash in loadShadersEnvironment() #3339

Closed
sl-service-account opened this issue Feb 23, 2018 · 0 comments
Closed

[BUG-214635] Crash in loadShadersEnvironment() #3339

sl-service-account opened this issue Feb 23, 2018 · 0 comments

Comments

@sl-service-account
Copy link

Steps to Reproduce

Most likely user was toying with settings (specifically, setting slider) but viewer crushed due to obsolete GPU driver.
For example Intel HD 4000 with driver 9.17.10.2817 (But this needs confirmation/investigation that it is actually a repro scenario and not just a coincidence)
https://crashbrowser.agni.lindenlab.com/viewer_crash_browser/index.php?filter_id=44738

Actual Behavior

Crash: ```Java

ig7icd64.dll
LLGLSLShader::bind()
LLGLSLShader::mapUniforms(std::vector<LLStaticHashedString,std::allocator > const *)
LLGLSLShader::createShader(std::vector<LLStaticHashedString,std::allocator > *,std::vector<LLStaticHashedString,std::allocator > *,unsigned int,char const * *)
LLViewerShaderMgr::loadShadersEnvironment()
LLViewerShaderMgr::setShaders()
LLFeatureManager::setGraphicsLevel(unsigned int,bool)
LLFloaterPreference::onChangeQuality(LLSD const &)
boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type,LLUICtrl *,LLSD const &>,std::_List_iterator<std::_List_val<std::_List_simple_types<boost::shared_ptr<boost::signals2::detail::
boost::signals2::optional_last_value::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type,LLUICtrl *,LLSD const &>,std::_List_iterator<std::_List_val<std::_List_s
boost::signals2::detail::signal_impl<void ,boost::signals2::optional_last_value,int,std::less,boost::function,boost::function,boost::signals2::mutex>::operator()(LLUICtrl *,LLSD const &)
LLUICtrl::onCommit()
LLSliderCtrl::onSliderCommit(LLUICtrl *,LLSD const &)
boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type,LLUICtrl *,LLSD const &>,std::_List_iterator<std::_List_val<std::_List_simple_types<boost::shared_ptr<boost::signals2::detail::
boost::signals2::optional_last_value::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type,LLUICtrl *,LLSD const &>,std::_List_iterator<std::_List_val<std::_List_s
boost::signals2::detail::signal_impl<void ,boost::signals2::optional_last_value,int,std::less,boost::function,boost::function,boost::signals2::mutex>::operator()(LLUICtrl *,LLSD const &)
LLUICtrl::onCommit()
LLSlider::setValueAndCommit(float)
LLSlider::handleHover(int,int,unsigned int)
LLViewerWindow::updateUI()
idle_startup()
LLAppViewer::idle()
LLAppViewer::frame()
WinMain


# Expected Behavior
If it is indeed an old driver, then there is a number of possible options:
- Viewer to notify user that it failed to change settings due to obsolete software (crashing is probably fine, just do it with notification), or at least for viewer to be more informative about this specific crash (both viewer and crashbrowser side).
- Viewer to let user to increase settings, but revert it immediately and pop up notification about reason (blocking advanced lightnings, shaders, e t c)
- Viewer to notify user on startup that driver is unreasonably old and simply disable settings slider and advanced features.
  
  
  # Other information
  Please provide preferable solution before accepting 
  I'm not sure how viewer performs under old drivers at the moment, needs investigation. 

<details>
<summary>Original Jira Fields</summary>

| Field          | Value         |
| ------------- | ------------- |
| Issue         | BUG-214635 |
| Summary       | Crash in loadShadersEnvironment() |
| Type          | Bug |
| Priority      | Unset |
| Status        | Closed |
| Resolution    | Accepted |
| Reporter      | AndreyK ProductEngine (andreyk.productengine) |
| Created at    | 2018-02-23T19:07:24Z |
| Updated at    | 2020-04-20T17:00:47Z |

{
'Business Unit': ['Platform'],
"Is there anything you'd like to add?": 'Please provide preferable solution before accepting',
'ReOpened Count': 0.0,
'Severity': 'Unset',
'System': 'SL Viewer',
'Target Viewer Version': 'viewer-development',
'What just happened?': 'Crash: {code}\r\nig7icd64.dll\r\nLLGLSLShader::bind()\r\nLLGLSLShader::mapUniforms(std::vector<LLStaticHashedString,std::allocator > const *)\r\nLLGLSLShader::createShader(std::vector<LLStaticHashedString,std::allocator > *,std::vector<LLStaticHashedString,std::allocator > *,unsigned int,char const * *)\r\nLLViewerShaderMgr::loadShadersEnvironment()\r\nLLViewerShaderMgr::setShaders()\r\nLLFeatureManager::setGraphicsLevel(unsigned int,bool)\r\nLLFloaterPreference::onChangeQuality(LLSD const &)\r\nboost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type,LLUICtrl *,LLSD const &>,std::_List_iterator<std::_List_val<std::_List_simple_types<boost::shared_ptr<boost::signals2::detail::\r\nboost::signals2::optional_last_value::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type,LLUICtrl *,LLSD const &>,std::_List_iterator<std::_List_val<std::_List_s\r\nboost::signals2::detail::signal_impl<void ,boost::signals2::optional_last_value,int,std::less,boost::function,boost::function,boost::signals2::mutex>::operator()(LLUICtrl *,LLSD const &)\r\nLLUICtrl::onCommit()\r\nLLSliderCtrl::onSliderCommit(LLUICtrl *,LLSD const &)\r\nboost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type,LLUICtrl *,LLSD const &>,std::_List_iterator<std::_List_val<std::_List_simple_types<boost::shared_ptr<boost::signals2::detail::\r\nboost::signals2::optional_last_value::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type,LLUICtrl *,LLSD const &>,std::_List_iterator<std::_List_val<std::_List_s\r\nboost::signals2::detail::signal_impl<void ,boost::signals2::optional_last_value,int,std::less,boost::function,boost::function,boost::signals2::mutex>::operator()(LLUICtrl ,LLSD const &)\r\nLLUICtrl::onCommit()\r\nLLSlider::setValueAndCommit(float)\r\nLLSlider::handleHover(int,int,unsigned int)\r\nLLViewerWindow::updateUI()\r\nidle_startup()\r\nLLAppViewer::idle()\r\nLLAppViewer::frame()\r\nWinMain\r\n{code}',
'What were you doing when it happened?': 'Most likely user was toying with setting but viewer crushed due to obsolete GPU driver\r\n(for example Intel HD 4000 with driver 9.17.10.2817, needs confirmation that it actually a repro scenario and not just a coicidence)\r\nhttps://crashbrowser.agni.lindenlab.com/viewer_crash_browser/index.php?filter_id=44738',
'What were you expecting to happen instead?': "If it is indeed an old driver, then there is a number of possible options:\r\n- Viewer to notify user that it failed to change settings due to obsolete software (crashing is probably fine, just do it with notification), or at least to be more informative about this specific crash.\r\n- Viewer to let user to increase settings, but revert it immediately and pop up notification about reason (blocking advanced lightnings, shaders, e t c)\r\n- Viewer to notify user on startup that driver is unreasonably old and simply disable settings slider and advanced features.\r\n
I'm not sure how viewer performs under old drivers at the moment, needs investigation.",
}


</details>
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