Open
Description
In that Rust issue, running on an i686
host, I found that DenseMap::allocateBuckets
-> llvm::allocate_buffer
-> operator new
was throwing std::bad_alloc
. Then when unwinding runs the destructors into LLVMContextDispose
, we get back into DenseMapBase::erase
and hit SIGSEGV
, presumably in the same instance that failed allocation.
Maybe allocate_buffer
should catch and call report_bad_alloc_error
like the safe_*alloc
functions do? But even so, it seems that some part of DenseMap
is not exception safe.