Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29243 Discussions

Application Verifier Invalid Thread Local Storage Index

MCCLARREN__BRAD
Beginner
1,505 Views
We have an application that worked well until 3 weeks ago. Specifics are:
- User interface is written in Qt 4.7.3
- Included is a C++ interface to underlying Fortran code
- Fortran code is built against Multi-threaded DLL runtime library
(Fortran 9.1 compiler)
- Visual Studio 2005 IDE

Nothing has changed in any of the source code or underlying Fortran
runtime library.

Using Microsoft Application Verifier the Visual Studio Debugger,
WinDbg Debugger, and Intel Debugger all show the following when the debug
version of this application is run:

=======================================
VERIFIER STOP 00000301: pid 0x16F8: Invalid TLS index used for current stack trace.

00000000 : Invalid TLS index.
0000ABBA : Expected lower part of the index.
00000000 : Not used.
00000000 : Not used.


=======================================
This verifier stop is continuable.
After debugging it use `go' to continue.

=======================================

When running in release mode the application crashes outright. Stack trace for
both cases (debug and release) are similar (offsets differ). Debug stack trace
(WinDbg) is:

vrfcore!VerifierStopMessageEx+0x4d1 (FPO: [Non-Fpo]) <- application verifier
vfbasics!CheckTlsIndex+0x65 (FPO: [1,0,0]) "
vfbasics!AvrfpTlsGetValue+0x40 (FPO: [1,0,4]) "
Warning: Stack unwind information not available.
Following frames may be wrong
libifcoremdd!for_set_reentrancy+0x3a5 <- fortran run time
libifcoremdd!for_set_reentrancy+0x300 "
libifcoremdd!fq_settextposition+0x7e9 "
libifcoremdd!for_read_int_fmt+0x23 "
RdfaD8!RDFRSR <- our stuff
RdfaD8!rdfrsr "
RdfaD8!build_tac "
RdfaD8!rdfcmpg "
ThRDF!paramDpRDF::lookup "


Does this ring a bell with anyone? Anyone else having trouble with
invalid TLS Indices?

thx
0 Kudos
1 Reply
Steven_L_Intel1
Employee
1,505 Views
I find a lot of hits using a Google search for the error text. Some of the links I followed suggested heap or stack corruption, and another suggests that there was an invalid call to TLSSetValue. Seems unlikely to me that this is related to your Fortran code, though you might be corrupting data by doing something invalid in Fortran (array out of bounds, mismatched types, etc.)

You have several layers in your application so it may be tricky to track down which is the culprit. Often with this sort of thing the trigger for the problem is far removed from where it gets reported.
0 Kudos
Reply