[libgcc1] segfault on ppc when unwinding stack (c++ exceptions, mono exceptions)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
gcc-4.1 (Ubuntu) |
Fix Released
|
Critical
|
Matthias Klose |
Bug Description
Hi,
the latest libgcc1 version (4.1.1-2ubuntu5) is unable to do stack unwinding (_Unwind_
This let mono, schroot FTBFS and probably renders many packages unusable on ppc.
The small C++ program pasted at the bottom segfaults on PPC and works fine on x86 and amd64. The backtrace at the segfault is:
#0 0x0fdf7404 in __frame_state_for () from /lib/libgcc_s.so.1
#1 0x0fdf8174 in _Unwind_
#2 0x0ffadf48 in __cxa_throw () from /usr/lib/
#3 0x10000bcc in main ()
Bye
------
#include <stdexcept>
#include <iostream>
int main()
{
try
{
throw std::runtime_
}
catch (std::runtime_error const& e)
{
std::cerr << "Caught runtime_error: " << e.what() << std::endl;
}
catch (...)
{
std::cerr << "Caught unknown exception!" << std::endl;
}
}
Changed in gcc-4.1: | |
importance: | Untriaged → Critical |
status: | Unconfirmed → Confirmed |
unable to reproduce with g++-4.1.1-8ubuntu1. Please recheck.
Sebastian Dröge schrieb: RaiseException( ) and __frame_ state_for( )) on ppc. When downgrading to 4.1.1-2ubuntu3 it works again so I assume it's caused by SSP. RaiseException () from /lib/libgcc_s.so.1 libstdc+ +.so.6 error(" Exception thrown");
> Public bug reported:
>
> Hi,
> the latest libgcc1 version (4.1.1-2ubuntu5) is unable to do stack unwinding (_Unwind_
> This let mono, schroot FTBFS and probably renders many packages unusable on ppc.
>
> The small C++ program pasted at the bottom segfaults on PPC and works fine on x86 and amd64. The backtrace at the segfault is:
> #0 0x0fdf7404 in __frame_state_for () from /lib/libgcc_s.so.1
> #1 0x0fdf8174 in _Unwind_
> #2 0x0ffadf48 in __cxa_throw () from /usr/lib/
> #3 0x10000bcc in main ()
>
> Bye
>
> ------
>
> #include <stdexcept>
> #include <iostream>
>
> int main()
> {
> try
> {
> throw std::runtime_
> }
> catch (std::runtime_error const& e)
> {
> std::cerr << "Caught runtime_error: " << e.what() << std::endl;
> }
> catch (...)
> {
> std::cerr << "Caught unknown exception!" << std::endl;
> }
> }
>
> ** Affects: gcc-4.1 (Ubuntu)
> Importance: Critical
> Status: Confirmed
>
> ** Changed in: gcc-4.1 (Ubuntu)
> Importance: Untriaged => Critical
> Status: Unconfirmed => Confirmed
>
>