Intel® C++ STM Compiler Prototype Edition (Archived)

TM handler of exceptions

The manual indicates that the TMhandler commits the transaction and rethrows the exception to other handlers. What ifit doesn't commit successfully?Does it abort the transaction? If so,does it still rethrow the exception or just ignore it? And does it retry the transaction?


issue with TXN and nonTXN symbols

Looks like the symbols generated by the compiler for transactional and non-transactional versions of a tm_callable function (foo._$TXN, foo._$nonTXN) are not global. Because whenever I try to use such functions where the declarations are not visible, I am getting undefined reference errors. For instance, I have a static library which annotates some functions as tm_callable. And when I try to use that static library in some other code, I see these problems.

Seg fault when STM Statistics turned on

Hi -

When I am trying to run a program that uses transactions with STM Statistics turned on (ITM_STATISTICS=verbose) I get a segmentation fault in the _ITM_initializeThread function which seems to be called through the commitTransaction. When running it without statistics turned on the program runs fine. Unfortunately, the size of the program is not trivial so I cannot post it. I tried to reproduce the seg fault in a smaller program but I couldn't.

Any help appreciated.



__tm_abort clarification

The documentation says that "__tm_abort" must be lexically bound to a transaction. My understanding is that you cannot call __tm_abort inside a tm_callable transaction called through a transaction. Is that right?

__attribute__ ((tm_callable)) void abort_me() {
__tm_abort; /* ILLEGAL */

foo() {
__tm_atomic {

Linker error!


Has anyone seen linker errors while compiling with STM compiler of the following form:

ld: .libs/ undefined versioned symbol name  get_commit_flag._@TXN

I am seeing these errors only for functions which are annotated as tm_callable. The strange thing is that I see these errors for certain annotated functions and not all of them.

Any help would be appreciated.


internal error: backend signals


I tried porting my C++ application to STM and received the following error along with a few warnings:

tx_warning: World.cpp(303): a non tm_callable/tm_waiver intrinsic function 'memcpy' called inside __tm_atomic section
tx_warning: World.cpp(246): a non tm_callable/tm_waiver intrinsic function '_Unwind_Resume' called inside __tm_atomic section
(0): internal error: backend signals

Any idea on what might cause the internal error? And/or if the warnings could be ignored?

STM: Thread Local Storage [updated with example]

Hi -

Has anyone noticed any abnormal behavior when using thread local storage (TLS) in the presence of atomic blocks? Is there any complication with the fact that the STM library uses TLS itself? A seg fault manifests when all the following three happen:
1. you make a call to a function foo inside a transaction.
2. function foo accesses thread local storage
3. the thread local storage object is defined in another object file that is linked against the file that has function foo.

Consider the following very simple scenario:

Iscriversi a Intel® C++ STM Compiler Prototype Edition (Archived)