Welcome to Intel® Software Network Quick Login | Join | Help |
Search in Intel® Software Network Forums
in Go

internal error: backend signals

Last post 03-20-2008, 2:43 AM by Jim Cownie. 7 replies.
Sort Posts: Previous Next
 03-11-2008, 8:22 AM 30250606  

internal error: backend signals

Hi,

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?
 
 03-11-2008, 2:54 PM 30250641 in reply to 30250606  

Re: internal error: backend signals

Next update of the STM compiler should address the warning.  For the internal error I need a test case to identify the error. Is it possible for you to post world.cpp without exposing any proprietary information.

Thanks

 
 03-12-2008, 3:34 AM 30250671 in reply to 30250606  

Re: internal error: backend signals

And/or if the warnings could be ignored?
The warnings are telling you that you are calling (possibly implicitly, for instance the mecpy might be the result of structure assignment of large stuctures) functions inside a transaction which have not been instrumented, and can therefore make memory accesses which will not obey the transactional protocols. As a result the isolation properties of the transaction may be violated (another transaction might see intermediate values caused by this transaction), or this transaction might fail to retry when it ought to (because it doesn't realise that it has read inconsistent values which were written by another concurrent transaction).

In the upcoming release the system will behave safely in such cases (because it will serialize the transactions, turning the correctness problem into a potential performance problem), but in the current release the compiler just ignores the issue, and lets the code run as though the functions had been decorated with tm_waiver.

Like Ravi I can't tell what the cause of the internal error is, but it may be related to exception handling (which you seem to be doing based on the call to _Unwind_Resume).

I hope that helps.


Jim Cownie
(Intel Performance, Analysis and Threading Lab)
 
 03-12-2008, 1:20 PM 30250711 in reply to 30250671  

Re: internal error: backend signals

I actually don't know where the call to _Unwind_Resume is happening.  Is that internal in STM?

Also, would it help if I wrap around memcpy in another function that's tm_callable?

Finally, the code I'm using is actually freely available on http://softwarecommunity.intel.com/articles/eng/2788.htm.  The only thing I'm doing is parallelizing the World::update() function by putting a __tm_atomic around the outer and inner loops in that function.

Thanks for the help so far.  I'm looking forward to your upcoming release.  When is that scheduled for?
 
 03-13-2008, 1:42 PM 30250767 in reply to 30250711  

Re: internal error: backend signals

_Unwind_Resume is part of exception handling mechanism on Linux.  Whenever you have try/catch or objects are constructed, the compiler generates code so if an exception occurs, during the unwinding phase searching for a  catch handler,  the objects which go out of scope can be destroyed.

Next update of the STM compiler recognizes _Unwind_Resume and not generate any warning

 
 03-17-2008, 5:08 PM 30250946 in reply to 30250711  

Re: internal error: backend signals

I added __tm_atomic in World::update() for the 2 loops as you suggested, the soon to be released compiler did not fail with an internal error. The expected release is around April 08
 
 03-19-2008, 11:30 AM 30251100 in reply to 30250946  

Re: internal error: backend signals

Would it be possible to get a Beta version of the compiler to try this out with?
 
 03-20-2008, 2:43 AM 30251161 in reply to 30251100  

Re: internal error: backend signals

Would it be possible to get a Beta version of the compiler to try this out with?

Sorry, that's impossible, because What-If already is effectively alpha testing! (There is no guarantee that this technology will ever appear as a product).

We're working to get the bits out as fast as possible to What-If, and there is no faster technique we can (acceptably to our management smiley [:-)]) use to get anything out sooner than is already scheduled.

So, I'm afraid you'll just have to wait.

 



Jim Cownie
(Intel Performance, Analysis and Threading Lab)
 
View as RSS news feed in XML

Shortcuts


Tags For This Post

...

Community Tags

...