[Bug 3944] New: identically named symbols overlap and break at runtime

bugzilla-daemon at icculus.org bugzilla-daemon at icculus.org
Wed Jan 21 13:04:15 EST 2009


http://bugzilla.icculus.org/show_bug.cgi?id=3944

           Summary: identically named symbols overlap and break at runtime
           Product: Quake 3
           Version: SVN HEAD
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: Misc
        AssignedTo: zakk at icculus.org
        ReportedBy: pip88nl at gmail.com
         QAContact: quake3-bugzilla at icculus.org


when using native code (vm_* = 0), the core loads qagame$platform.so (where
$platform is i386 on my machine). this shared library contains the symbol
bot_developer, which is an int, defined in game/ai_main.c.

the ioquake3 binary also contains a symbol with the same name, defined in
botlib/be_interface.c and used to store a configuration variable. the dynamic
loading overwrites references to the symbol and subsequent writes to the
configuration variable occur in the wrong memory, overwriting the bot_developer
int from "game" and 252 bytes after it. those bytes are part of "botimport",
used to export symbols to botlib. an attempt to use a function from botimport
(such as botimport.GetMemory) results in a segmentation fault or (depending on
compile flags and the actual bytes written (usually '\0') an assertion failure)

a workaround is to enable the compiler flag -fvisibility=hidden to only export
symbols that are explicitly marked with __attribute__ ((__visibility__
((default))).

the real fix is probably to rename one of the symbols.


-- 
Configure bugmail: http://bugzilla.icculus.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.



More information about the quake3-bugzilla mailing list