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

Linked list

geha
Beginner
1,477 Views
Hello,
I'm using intel fortran with Ubuntu 8.10 (amd64). I have the following problem: When I start idb with my program, I get the following message:

Unable to parse input as legal command or Fortran expression.
Assertion failed: "expr" src/ui/model/dataretrieverdef.C:2901
This is an unexpected condition and may indicate the presence of a defect.
If you wish to report this, please include the stack trace that follows.
/opt/intel/Compiler/11.0/081/bin/intel64/iidb(_ZN15IDBAssertFailed3runEPKcS1_j+0xe) [0x5d42e4]
/opt/intel/Compiler/11.0/081/bin/intel64/iidb(_ZN14DTLU_namespace12assertFailedEPKcS1_j+0x24) [0xb83d64]
/opt/intel/Compiler/11.0/081/bin/intel64/iidb(_ZN16DataRetrieverDef12fillEvalRootEPN4IUDG7DbgData10DataListWCESsiibSsiSs+0x9f2) [0x8f13de]
/opt/intel/Compiler/11.0/081/bin/intel64/iidb(_ZN16DataRetrieverDef22onRequestLocalEvalListERKSsS1_S1_S1_+0x6ee) [0x8f502a]
/opt/intel/Compiler/11.0/081/idb/lib/intel64/libDebuggerServices.so(_ZN4IUDG2DS13DataRetriever9onRequestERNS_7DbgData14DbgDataManager13DataHierarchyE+0x7dc) [0x7f8ebc4b0c8c]
/opt/intel/Compiler/11.0/081/idb/lib/intel64/libDebuggerServices.so(_ZN4IUDG2DS12DataServices10processMsgEPNS_15MSGCLASSFACTORY9ClientMsgE+0x20c) [0x7f8ebc4b18b0]
/opt/intel/Compiler/11.0/081/idb/lib/intel64/libDebuggerServices.so(_ZN4IUDG2DS10Dispatcher11dispatchMsgEPNS_15MSGCLASSFACTORY9ClientMsgE+0x207) [0x7f8ebc4bbe3f]
/opt/intel/Compiler/11.0/081/idb/lib/intel64/libDebuggerServices.so(_ZN4IUDG2DS12DSPostOffice13flushMsgQueueEv+0x6d) [0x7f8ebc4c06cf]
/opt/intel/Compiler/11.0/081/bin/intel64/iidb(_ZN8IudgGlue18processPendingMsgsEb+0x159) [0x91df4b]
/opt/intel/Compiler/11.0/081/bin/intel64/iidb(vfprintf+0x3aae) [0x5cfbbe]
/opt/intel/Compiler/11.0/081/bin/intel64/iidb(_Z15ProcessCommandsv+0x47) [0x5cf851]
/opt/intel/Compiler/11.0/081/bin/intel64/iidb(_Z7idbMainiPPKcS1_+0x1b0) [0x5cf2d8]
/opt/intel/Compiler/11.0/081/bin/intel64/iidb(main+0x3c) [0x5ce080]
/lib/libc.so.6(__libc_start_main+0xe6) [0x7f8ebce25466]
/opt/intel/Compiler/11.0/081/bin/intel64/iidb(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c+0x6a) [0x5cdfaa]

I found out that the reason for this message is the use of a linked list. Just for demonstration, I have created the following useless program (of course, this program would not work correctly). After compiling "ifort -g tprog.f90" and starting the debugger with "idb a.out", I set a break point at "nnode=10" and run the debugger. Then I get this error message. In the real program, the linked list is initialized. But it doesn't solve the problem. I can still continue to use the debugger. But I don't get informations about local variables.

Do you have any ideas?

Regards,
Georg


program tprog
!
implicit none
!
type tnode
real(8) ::xyz(3)
integer(4) ::node
type(tnode),pointer ::next,prev
end type tnode

integer :: i,nnode
!
type(tnode),pointer::coofno
type(tnode),target ::first_coofno
!
nnode = 10
!
coofno => first_coofno
do i=1,nnode
coofno => coofno%next
end do
!
!
end program tprog

0 Kudos
7 Replies
TimP
Honored Contributor III
1,477 Views
I guess you must have disabled optimization, as that would enable the compiler to remove the dead code. Without optimization, running under idb shows a SIGSEGV when I attempt to step past where 'p coofno' shows that coofno%next is 0x0, so then coofno is set to 0x0. How are you looking for additional information?
I am running under Red Hat 5.2, with jre 1.6 64-bit installed from sun.com.
0 Kudos
jimdempseyatthecove
Honored Contributor III
1,477 Views

I would expect undeterminable results on the second occurance of coofno => coofno%next because first_coofno is not initialized first_coofno%{xyz, node, next, prev} are all junk.

Jim
0 Kudos
geha
Beginner
1,477 Views
Hello,
as I wrote, the code doesn't work. It was just for demonstration purpose. Here again a program which works, but I get the same error message when I start the debugger.

program tprog
!
implicit none
!
!.....................declaration...........................
!
type tnode
real(8) ::xyz(3)
type(tnode),pointer ::next
end type tnode

integer :: i,nnode
!
type(tnode),pointer::coofno
type(tnode),target ::first_coofno
!.....................executable part.......................
!
nnode = 10
!
! assign values
first_coofno%xyz(1:3)=1.d0
!
coofno => first_coofno
!
do i=2,nnode
!
allocate(coofno%next)
coofno => coofno%next
!
! set some values
coofno%xyz(1:3) = 1.d0*i
end do
!
! set to first set of coordinates
coofno => first_coofno
!
! go around all nodes
do while( associated(coofno) )
!
! print
write(*,*) coofno%xyz
!
! set to next element in list
coofno => coofno%next
end do
!
!
end program tprog

With the option "-g", optimization should be turned off anyway.


Regards,
Georg
0 Kudos
TimP
Honored Contributor III
1,477 Views
No problem here. You said your previous version was "just a demonstration." Of what? In case your idb installation is bad, did you check your installation of jre etc?
0 Kudos
jimdempseyatthecove
Honored Contributor III
1,477 Views

The loop that allocates the next coofno does not nullify the link pointer of the new node.
Therefore, each node that is appended to the list has junkfor a pointer to the next node.
This isn't a problem until your code expects thelink pointer to point to NULL (.not. associated) whenexamining the link pointer at end of list.
The loop following the allocation loop will crap out when it tries to access the node after the last one you allocated.

Do not assume that an allocation returns wiped data (Debug mode may or may not do this, release mode will not wipe.

Jim Dempsey
0 Kudos
Ron_Green
Moderator
1,477 Views
We confirmed this bug with the 11.0.081 compiler and IDB on Ubuntu 8.04 and 8.10. The trigger is to use the graphical idb interface, set a breakpoint, run to the breakpoint and then open the Locals window (the error will appear in your console window).

The bug is not isolated to Ubuntu nor AMD - it occurs with any OS and processor. The bug is in the GUI code interfacing with IDB.

Good news, our developers found this is fixed in the upcoming 11.1 release. I have confirmed the fix with your code and the Beta 11.1 compiler and IDB GUI. Tendatively, this compiler is due for general availability sometime this summer.
.
ron
0 Kudos
nillar
Beginner
1,477 Views
I am running IDB version 12.0 together with ifort (version 12.0.4) on Ubuntu 11.04. (I'm using the non-commercial version.) When using a linked list in my program I'm experiencing the same kind of problems as reported above.
Seeing that the bug causing the problem above should have been fixed in the 11.1 release, I was curious to know wether this bug was fixed or not? I would be very happy to know if my problems are caused by the IDB Gui as well, or if it is caused by something else. It is fairly anoying not to be able to see any local variables because of the linked list items which I will depend heavily upon....

Kind regards
Gunhild
0 Kudos
Reply