Reputation: 1
I'm trying to track down a segfault problem in an old C code (not written by me). The segfaults occur only, if the addresses of certain variables in that code exceed the 32bit integer limit. (So I've got a pretty good idea what's going wrong, but I don't know where.)
So, my question is: Is there any way to force linux to allocate memory for a process in the high address space? At the moment it's pretty much down to chance whether the segfault happen, which makes debugging a bit difficult.
I'm running Ubuntu 10.04, Kernel 2.6.31-23-generic on a Dell inspiron 1525 laptop with 2GB ram, if that's any help.
Thanks in advance, Martin.
Upvotes: 0
Views: 680
Reputation: 215241
I would turn on the -Wpointer-to-int-cast
and -Wint-to-pointer-cast
warning options and check out any warnings they turn up (I believe these are included in -Wall
on 64-bit targets). The cause is very likely something related to this, and simply auditing the warnings the compiler turns up may be a better approach than using a debugger.
Upvotes: 0
Reputation: 20982
You can allocate an anonymous block of memory with the mmap()
system call, which you can pass as an argument where you want it to be mapped.
Upvotes: 2