VTune™ Amplifier XE collection warning: Symbol file is not found

The VTune™ Amplifier XE may display a warning about “Symbol file not found” during Hotspots, Concurrency, or Locks and Waits analysis. For example:

>/opt/intel/vtune_amplifier_xe_2011/bin64/amplxe-cl -collect hotspots -r test1 – my_test_exe

Warning: Symbol file is not found.

The call stack passing through the module [vdso] may be incorrect Using result path `/home/vtsymbal/test1 Executing actions 75 % Generating a report Summary --

----- Elapsed Time: 6.354 CPU Time: 6.210

Executing actions 100 % done 

The tool notifies that there is a module [vdso] that cannot be resolved for symbols (the brackets are used for that purpose) and therefore the call stack may be incorrect. In some cases it might be a [vsyscall] module. You may check that the vdso module is in a dynamic dependency list:

>ldd -d my_test_exe linux-vdso.so.1

=> (0x00002aaaaaac6000) libtbb.so.2
=> /opt/intel/tbb/tbb40_233oss/lib/libtbb.so.2 (0x00002aaaaabc7000) libstdc++.so.6
=> /usr/intel/pkgs/gcc/4.5.2/lib64/libstdc++.so.6 (0x00002aaaaadf5000) libm.so.6
=> /lib64/libm.so.6 (0x00002aaaab117000) libgcc_s.so.1
=> /usr/intel/pkgs/gcc/4.5.2/lib64/libgcc_s.so.1 (0x00002aaaab26c000) libc.so.6
=> /lib64/libc.so.6 (0x00002aaaab481000) librt.so.1
=> /lib64/librt.so.1 (0x00002aaaab6c2000) libdl.so.2
=> /lib64/libdl.so.2 (0x00002aaaab7cb000) libpthread.so.0
=> /lib64/libpthread.so.0 (0x00002aaaab8cf000) /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)

You can safely ignore this warning if you see a reference to the [vdso]. It means that the kernel dynamically made some temporary memory allocations by loading some executable code into memory space. The fact that VTune Amplifier XE throws this warning indicates that some Hotspot samples were taken when that code was running. During post-processing time VTune Amplifier XE’s collector could not find the vdso anymore. The module linux-vdso.so.1 (linux-vsyscall.so.1 or linux-gate.so.1 on earlier Linux kernels) is a Virtual Dynamic Shared Object (VDSO), which resides in the address space of the program. This is a virtual library which contains a complex logic that provides user applications with fast access to system functions depending on CPU microarchitecture – either through interrupt mechanism or though the fast system calls smechanism (most applicable for modern CPUs) [1].