I have a very simple test program, running on Solaris 5.8:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *paths;
paths = getenv("PATH");
printf("Paths: %s\n", paths);
free(paths); // this causes a bus error
return 0;
}
If I don't call free()
at the end, it displays the message fine and exits. If I include the free()
call, it crashes with a bus error. I've had other calls to free()
, in other programs, cause segmentation faults as well.
Even if I allocate the memory for *paths
myself, free()
will cause a bus error. Is there some reason trying to free up the memory is causing a crash?