After trying to come up with a fallback for wrong locale I've to say
this cannot be fixed at the point we hit the problem in unity-scopes-
shell. It's already too late, and moreover there seem to be issues with
the libstdc++ library when locale setup is broken and it's impossible to
recover.

Related to this:
http://stackoverflow.com/questions/1745045/stdlocale-breakage-on-macos-10-6-with-lang-en-us-utf-8
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15467

When the locale setup is broken (which I can easily reproduce in my VM with 
only minimal ubuntu system with some locale settings pointing to non-existing 
PL locales, and LC_ALL is unset), all the locale-related C++ functions throw 
when trying to get current locale name and they also throw after trying to set 
LC_ALL to "C" at this point. In summary, these method calls throw:
std::locale("") (should get us current locale setup)
std::setlocale(LC_ALL, "C")
std::locale::global(std::locale::classic())

The only workaround I can think of is to avoid the crash, end up with a blank 
Dash page and log an error message to unity8-dash.log.
For the occasional problem with the tests we see when landing the package, I'll 
make sure LC_ALL=C when tests are executed.

** Bug watch added: GCC Bugzilla #15467
   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15467

** Bug watch added: GCC Bugzilla #70493
   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70493

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1363946

Title:
  unity8-dash crashed with SIGABRT in qt_message_fatal() under incorrect
  locale

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/unity-scopes-api/+bug/1363946/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to