gdb under FC devel and undefined symbols

Andrew Haley aph at redhat.com
Fri Feb 17 16:49:58 UTC 2006


Ralf Ertzinger writes:
 > Hi.
 > 
 > I have noticed that under FC versions since FC4 the compiler seems to have
 > gotten more aggressive with optimizations. This shows up in the following
 > phenomenon (while debugging a "mount" segfault):
 > 
 > (gdb) run -t nfs -o ro 172.17.128.141:/var/spool/asterisk /mnt
 > Starting program: /bin/mount -t nfs -o ro 172.17.128.141:/var/spool/asterisk /mnt
 > Reading symbols from shared object read from target memory...done.
 > Loaded system supplied DSO at 0xd34000
 > 
 > Program received signal SIGSEGV, Segmentation fault.
 > nfsmount (spec=0x92e1200 "172.17.128.141:/var/spool/asterisk", node=0x92e1228 "/mnt", flags=0xbfd7ec20, extra_opts=0xbfd7ec1c, mount_opts=0xbfd7ec18,
 >     nfs_mount_vers=0xbfd7ec10, running_bg=0) at nfsmount.c:1206
 > 1206                            if (flavor[i] == data.pseudoflavor)
 > (gdb) whatis flavor
 > No symbol "flavor" in current context.
 > 
 > 
 > This has happened to me on other occassions as well. Some asking on
 > #fedora-devel and googling shows that this is most likely due to
 > optimization in the compiler.

It's possible.  It all depends on what `flavor' is.  If it's a
statically allocated variable of array or pointer type there should be
debuginfo for it.  If it's an auto variable gcc might have optimized
it away altogether.

 > While this is all good and well I'd like to know how I am to debug
 > failures like the above in the future when gdb is unable to show me
 > variable types or contents.

Well, the point of gcc's optimizer is to make your code faster by
removing or replacing things.  In this case, gcc has probably decided
that `flavor' isn't needed.  For example, it may have replaced the
array indexing with some more efficient operation.

See gcc manual, Section 3.10:

Turning on optimization flags makes the compiler attempt to improve
the performance and/or code size at the expense of compilation time and
possibly the ability to debug the program.

Andrew.




More information about the fedora-devel-list mailing list