On Wed, 2005-10-26 12:06:20, Dave Anderson wrote:
Ok, so it's a malloc() failure. Anyway, it's calculating
symbol name
namespace by doing character pointer arithmetic between the pointer to the
first symbol's name string and the last symbol's name string in the
module. (The BUFSIZE is fluff.) But AFAICT, it shouldn't have anything
to do with the value of the symbol, but rather the pointers in the
module's string section. Sorry but, it's been a while since I looked at
this code, much less changed it. So the only thing I can possibly think
of is that somehow there's a reference to a module name string that's in
another module entirely? What are the "first" and "last" values, and
are
they both contained within the module's vmalloc'd data area?
That is the problem. The @$^%@#$ CA SEOS module if playing some sort of
game. The first symbol table entry has the name "dynamic_Seos_syscall_num"
with the address 0x4f90dc0. Which is far below the base of the modules at
0x7880d000. There are a few symbols in the CA "ksymadd" module which also
have addresses outside the vmalloc()'ed module space.
This happens on x86 as well. But in that case the delta between the vmalloc
module space addresses and the address of "dynamic_Seos_syscall_num" is only
a few hundred MB, not 1.9 GB.
--
Kurtis D. Rader, Level 3 Linux Support
ABC Service Center, Linux Change Team
T/L 775-3714, DID +1 503-578-3714