Сообщение [VS2015] Проблемы с std::locale/setlocale от 11.10.2017 12:44
Изменено 11.10.2017 12:45 DDDX
[VS2015] Проблемы с std::locale/setlocale
Привет всем.
Мне тут пользователь заслал дамп с падением его программы.
Говорит, исходя из опыта, проблема в многопоточном вызове ucrtbase.dll!setlocale(). И приводит пару ссылок с подобными проблемами:
https://connect.microsoft.com/VisualStudio/feedback/details/790530/crt-function-setlocale-imp-setlocale-crashes-with-multithreaded-applications
https://connect.microsoft.com/VisualStudio/feedback/details/794122
У меня этот setlocale не вызывается. Я юзаю std::locale("C").
Я уже огребал проблемы с этим std::locale в многопоточном коде (VS2005-VS2010) — он там внутри юзал MT-блокировку, которая многопоточный кодставит раком делает однопоточным.
В критических местах я эту проблему решил (задействую глобальные объекты этого класса, которые создаются при инициализации модуля).
А в других местах оставил как есть (создаю локальный объект std::locale и юзаю его). Как раз в таком месте оно и упало.
---
Интересно, они в VS2015-ой что, ту MT-блокировку изничтожили, из-за которой у меня раньше все тупило? Или оно не падало потому что везло?
С другой стороны пока глобальные объекты не были задействован, почему оно не падало?
---
Есть конечно вариант, что кто-то нагадил в память.
Но больше склоняюсь к тому, что трабла именно с std::locale.
Сам я решил изничтожить использование std::locale в своем коде.
Но интересно узнать мнение других.
---
Спасибо, что дочитали этот поток сознания до конца.
Мне тут пользователь заслал дамп с падением его программы.
| Стек падения | |
| |
Говорит, исходя из опыта, проблема в многопоточном вызове ucrtbase.dll!setlocale(). И приводит пару ссылок с подобными проблемами:
https://connect.microsoft.com/VisualStudio/feedback/details/790530/crt-function-setlocale-imp-setlocale-crashes-with-multithreaded-applications
https://connect.microsoft.com/VisualStudio/feedback/details/794122
У меня этот setlocale не вызывается. Я юзаю std::locale("C").
Я уже огребал проблемы с этим std::locale в многопоточном коде (VS2005-VS2010) — он там внутри юзал MT-блокировку, которая многопоточный код
В критических местах я эту проблему решил (задействую глобальные объекты этого класса, которые создаются при инициализации модуля).
А в других местах оставил как есть (создаю локальный объект std::locale и юзаю его). Как раз в таком месте оно и упало.
---
Интересно, они в VS2015-ой что, ту MT-блокировку изничтожили, из-за которой у меня раньше все тупило? Или оно не падало потому что везло?
С другой стороны пока глобальные объекты не были задействован, почему оно не падало?
---
Есть конечно вариант, что кто-то нагадил в память.
Но больше склоняюсь к тому, что трабла именно с std::locale.
Сам я решил изничтожить использование std::locale в своем коде.
Но интересно узнать мнение других.
---
Спасибо, что дочитали этот поток сознания до конца.
[VS2015] Проблемы с std::locale/setlocale
Привет всем.
Мне тут пользователь заслал дамп с падением его программы из-за моего модуля.
Говорит, исходя из опыта, проблема в многопоточном вызове ucrtbase.dll!setlocale(). И приводит пару ссылок с подобными проблемами:
https://connect.microsoft.com/VisualStudio/feedback/details/790530/crt-function-setlocale-imp-setlocale-crashes-with-multithreaded-applications
https://connect.microsoft.com/VisualStudio/feedback/details/794122
У меня этот setlocale не вызывается. Я юзаю std::locale("C").
Я уже огребал проблемы с этим std::locale в многопоточном коде (VS2005-VS2010) — он там внутри юзал MT-блокировку, которая многопоточный кодставит раком делает однопоточным.
В критических местах я эту проблему решил (задействую глобальные объекты этого класса, которые создаются при инициализации модуля).
А в других местах оставил как есть (создаю локальный объект std::locale и юзаю его). Как раз в таком месте оно и упало.
---
Интересно, они в VS2015-ой что, ту MT-блокировку изничтожили, из-за которой у меня раньше все тупило? Или оно не падало потому что везло?
С другой стороны пока глобальные объекты не были задействован, почему оно не падало?
---
Есть конечно вариант, что кто-то нагадил в память.
Но больше склоняюсь к тому, что трабла именно с std::locale.
Сам я решил изничтожить использование std::locale в своем коде.
Но интересно узнать мнение других.
---
Спасибо, что дочитали этот поток сознания до конца.
Мне тут пользователь заслал дамп с падением его программы из-за моего модуля.
| Стек падения | |
| |
Говорит, исходя из опыта, проблема в многопоточном вызове ucrtbase.dll!setlocale(). И приводит пару ссылок с подобными проблемами:
https://connect.microsoft.com/VisualStudio/feedback/details/790530/crt-function-setlocale-imp-setlocale-crashes-with-multithreaded-applications
https://connect.microsoft.com/VisualStudio/feedback/details/794122
У меня этот setlocale не вызывается. Я юзаю std::locale("C").
Я уже огребал проблемы с этим std::locale в многопоточном коде (VS2005-VS2010) — он там внутри юзал MT-блокировку, которая многопоточный код
В критических местах я эту проблему решил (задействую глобальные объекты этого класса, которые создаются при инициализации модуля).
А в других местах оставил как есть (создаю локальный объект std::locale и юзаю его). Как раз в таком месте оно и упало.
---
Интересно, они в VS2015-ой что, ту MT-блокировку изничтожили, из-за которой у меня раньше все тупило? Или оно не падало потому что везло?
С другой стороны пока глобальные объекты не были задействован, почему оно не падало?
---
Есть конечно вариант, что кто-то нагадил в память.
Но больше склоняюсь к тому, что трабла именно с std::locale.
Сам я решил изничтожить использование std::locale в своем коде.
Но интересно узнать мнение других.
---
Спасибо, что дочитали этот поток сознания до конца.