Bug 1861365 Comment 4 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

As shown by Kelsey in comment 3, the graphics code is not at fault here. It is rather the interaction with the standard library code around locales that seems be buggy. There are multiple surprising elements that we are currently investigating with [:sergesanspaille], but here are a few points.

Based on user comments and distribution of the volume across OS versions, I was able to reproduce this crash consistently from a fresh Ubuntu 18.04 install, by installing Firefox as follows:

```
sudo add-apt-repository ppa:mozillateam/firefox-next 
sudo apt-get update
sudo apt-get install firefox
```

STR: Navigate to any WebGL page, e.g. [Aquarium](http://webglsamples.org/aquarium/aquarium.html).

The fact that the crash occurs in these builds for 18.04 specifically could potentially be explained by compiling for/with a `libstc++` version that predates `PR libstdc++/59439`:

```
2018-10-03  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/59439
	* src/c++98/locale.cc (locale::locale(const locale&)): Bypass
	reference count updates for the classic locale.
	(locale::~locale()): Likewise.
	(locale::operator=(const locale&)): Likewise.
	* src/c++98/locale_init.cc (locale::locale()): Likewise.
	(locale::global(const locale&)): Likewise.
```

But the weirdest part is that many `libstc++` functions related to locales are directly incorporated in the `firefox` binary, and their symbols are exported, thus taking precedence over `libstdc++.so.6`. In the crash stack, `std::locale::operator=` is part of `firefox`, not `libstdc++.so.6`.

The crash itself may have been introduced as a side effect of bug 1855986, which may have led the compiler to take this surprising decision to incorporate `std::locale` code directly into the `firefox` binary.
As shown by Kelsey in comment 3, the graphics code is not at fault here. It is rather the interaction with the standard library code around locales that seems be buggy. There are multiple surprising elements that we are currently investigating with [:sergesanspaille], but here are a few points.

Based on user comments and distribution of the volume across OS versions, I was able to reproduce this crash consistently from a fresh Ubuntu 18.04 install, by installing Firefox as follows:

```
sudo add-apt-repository ppa:mozillateam/firefox-next 
sudo apt-get update
sudo apt-get install firefox
```

STR: Navigate to any WebGL page, e.g. [Aquarium](http://webglsamples.org/aquarium/aquarium.html).

The fact that the crash occurs in these builds for 18.04 specifically could potentially be explained by compiling for/with a `libstc++` version that predates `PR libstdc++/59439` (i.e. `PR libstdc++/59439` could be preventing the crash even though that was not the original reason behind it):

```
2018-10-03  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/59439
	* src/c++98/locale.cc (locale::locale(const locale&)): Bypass
	reference count updates for the classic locale.
	(locale::~locale()): Likewise.
	(locale::operator=(const locale&)): Likewise.
	* src/c++98/locale_init.cc (locale::locale()): Likewise.
	(locale::global(const locale&)): Likewise.
```

But the weirdest part is that many `libstc++` functions related to locales are directly incorporated in the `firefox` binary, and their symbols are exported, thus taking precedence over `libstdc++.so.6`. In the crash stack, `std::locale::operator=` is part of `firefox`, not `libstdc++.so.6`.

The crash itself may have been introduced as a side effect of bug 1855986, which may have led the compiler to take this surprising decision to incorporate `std::locale` code directly into the `firefox` binary.
As shown by Kelsey in comment 3, the graphics code is not at fault here. It is rather the interaction with the standard library code around locales that seems be buggy. There are multiple surprising elements that we are currently investigating with [:sergesanspaille], but here are a few points.

Based on user comments and distribution of the volume across OS versions, I was able to reproduce this crash consistently from a fresh Ubuntu 18.04 install, by installing Firefox as follows:

```
sudo add-apt-repository ppa:mozillateam/firefox-next 
sudo apt-get update
sudo apt-get install firefox
```

STR: Navigate to any WebGL page, e.g. [Aquarium](http://webglsamples.org/aquarium/aquarium.html).

~~The fact that the crash occurs in these builds for 18.04 specifically could potentially be explained by compiling for/with a `libstc++` version that predates `PR libstdc++/59439` (i.e. `PR libstdc++/59439` could be preventing the crash even though that was not the original reason behind it):~~

```
2018-10-03  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/59439
	* src/c++98/locale.cc (locale::locale(const locale&)): Bypass
	reference count updates for the classic locale.
	(locale::~locale()): Likewise.
	(locale::operator=(const locale&)): Likewise.
	* src/c++98/locale_init.cc (locale::locale()): Likewise.
	(locale::global(const locale&)): Likewise.
```

But the weirdest part is that many `libstc++` functions related to locales are directly incorporated in the `firefox` binary, and their symbols are exported, thus taking precedence over `libstdc++.so.6`. In the crash stack, `std::locale::operator=` is part of `firefox`, not `libstdc++.so.6`.

The crash itself may have been introduced as a side effect of bug 1855986, which may have led the compiler to take this surprising decision to incorporate `std::locale` code directly into the `firefox` binary.
As shown by Kelsey in comment 3, the graphics code is not at fault here. It is rather the interaction with the standard library code around locales that seems to be buggy. There are multiple surprising elements that we are currently investigating with [:sergesanspaille], but here are a few points.

Based on user comments and distribution of the volume across OS versions, I was able to reproduce this crash consistently from a fresh Ubuntu 18.04 install, by installing Firefox as follows:

```
sudo add-apt-repository ppa:mozillateam/firefox-next 
sudo apt-get update
sudo apt-get install firefox
```

STR: Navigate to any WebGL page, e.g. [Aquarium](http://webglsamples.org/aquarium/aquarium.html).

~~The fact that the crash occurs in these builds for 18.04 specifically could potentially be explained by compiling for/with a `libstc++` version that predates `PR libstdc++/59439` (i.e. `PR libstdc++/59439` could be preventing the crash even though that was not the original reason behind it):~~

```
2018-10-03  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/59439
	* src/c++98/locale.cc (locale::locale(const locale&)): Bypass
	reference count updates for the classic locale.
	(locale::~locale()): Likewise.
	(locale::operator=(const locale&)): Likewise.
	* src/c++98/locale_init.cc (locale::locale()): Likewise.
	(locale::global(const locale&)): Likewise.
```

But the weirdest part is that many `libstc++` functions related to locales are directly incorporated in the `firefox` binary, and their symbols are exported, thus taking precedence over `libstdc++.so.6`. In the crash stack, `std::locale::operator=` is part of `firefox`, not `libstdc++.so.6`.

The crash itself may have been introduced as a side effect of bug 1855986, which may have led the compiler to take this surprising decision to incorporate `std::locale` code directly into the `firefox` binary.
As shown by Kelsey in comment 3, the graphics code is not at fault here. It is rather the interaction with the standard library code around locales that seems to be buggy. There are multiple surprising elements that we are currently investigating with [:sergesanspaille], but here are a few points.

Based on user comments and distribution of the volume across OS versions, I was able to reproduce this crash consistently from a fresh Ubuntu 18.04 install, by installing Firefox as follows:

```
sudo add-apt-repository ppa:mozillateam/firefox-next 
sudo apt-get update
sudo apt-get install firefox
```

STR: Navigate to any WebGL page, e.g. [Aquarium](http://webglsamples.org/aquarium/aquarium.html).

~~The fact that the crash occurs in these builds for 18.04 specifically could potentially be explained by compiling for/with a `libstc++` version that predates `PR libstdc++/59439` (i.e. `PR libstdc++/59439` could be preventing the crash even though that was not the original reason behind it):~~ (Edit: this part was a false lead.)

```
2018-10-03  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/59439
	* src/c++98/locale.cc (locale::locale(const locale&)): Bypass
	reference count updates for the classic locale.
	(locale::~locale()): Likewise.
	(locale::operator=(const locale&)): Likewise.
	* src/c++98/locale_init.cc (locale::locale()): Likewise.
	(locale::global(const locale&)): Likewise.
```

But the weirdest part is that many `libstc++` functions related to locales are directly incorporated in the `firefox` binary, and their symbols are exported, thus taking precedence over `libstdc++.so.6`. In the crash stack, `std::locale::operator=` is part of `firefox`, not `libstdc++.so.6`.

The crash itself may have been introduced as a side effect of bug 1855986, which may have led the compiler to take this surprising decision to incorporate `std::locale` code directly into the `firefox` binary.

Back to Bug 1861365 Comment 4