https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61199
Bug ID: 61199 Summary: [trans-mem] _cxa_free_exception is not transaction safe Product: gcc Version: 4.10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: torvald at gcc dot gnu.org Created attachment 32804 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=32804&action=edit test case See attached test case. I'm not quite sure how we need to handle it: Is this only called when another transaction has taken over, and we're freeing up garbage? Or can a call to this create a situation in which we "canceled" a previous exception throw? If the latter case holds, I guess we also need to reset the transaction-in-flight state that libitm keeps when cxa_allocate_exception is called. Depending on this, we either need to make it TM-pure or add a wrapper in libitm. Thoughts?