I'm running this following simple C program:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv){
void *p = malloc(4);
fprintf (stderr, "p==%p\n", p);
return 0;
}
Different runs give different results:
p==0x101c010
then: p==0x1ad9010
then: p==0xe77010
and so.
As I remember, in the past malloc was fully deterministic. So probably from some version, some randomness was added to malloc. I am using now gcc-4.6.3 on Ubuntu.
Is there a way to eliminite that randomness ?
If the variation is caused by address space layout randomization, then, according to this page, you can disable it with:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
This should be done only temporarily for debugging purposes.
This is a good paper on interposing functions: Intercepting Arbitrary Functions on Windows, UNIX, and Macintosh OS X Platforms by Daniel S. Myers and Adam L. Bazinet. This would allow you to replace the malloc
behavior with a completely controlled implementation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With