Hello all,
One of the application we port to Aix from linux Segmentation faults when it exits. Here is part of backtrace of SEGV:
(dbx) where
splay(??, ??, ??) at
free_y(??, ??) at
free_common(??) at
....
exit(??) at
...
Application seem to perform everything expected well and while exiting it SEGV. By doing lot of googling learnt this could be due to heap corruption.
Tried the following:
- setenv MALLOCDEBUG verbose
Result:
Malloc Report: The address passed to free, <x>, is
outside the valid range of addresses allocated by malloc (errno = 2).
-
setenv MALLOCTYPE debug
Run the application no SEGV at all. It exits normally. -
setenv MALLOCTYPE watson
setenv MALLOCDEBUG catch_overflow
Run the application no SEGV at all. It exits normally.
Tried running same application same way with valgrind, totalview, MEMORY_CHECK_2 in linux to find potential coding error but found none.
Queries:
-
How can I find what is happening in memory address "x"? Who changes/disturbs it? Tried setting a watchpoint for that location but the error was:
Unreadable instruction at address 0x10000000
What else can i do? How can I find what happens in this location? -
What difference does malloctype debug/watson does compared to default(yoktown)? Why isn't there a SEGV at that time?
-
Is there any tool to watch/examine heap?
-
Is there any other tool/option which could be used to debug this problem further?
Any pointers/suggestions/help is most welcome
Thanks in advance.