Tue 14 Mar 2006 10:21:47 AM UTC, original submission:
This bug causes make to fail on AIX only.
To recreate:
Create 2 makefiles, "Makefile", and "sub.mk"...
"Makefile" contents:
_________________________
default:
make -r sub.mk
_________________________
"sub.mk" contents:
_________________________
default:
_________________________
Place both makefiles in the same directory, and then run, "make". You'll see an error like this:
_________________________
running sub.mk
make -r sub.mk
make[1]: Entering directory `/tmp'
make[1]: *** virtual memory exhausted. Stop.
make[1]: Leaving directory `/tmp'
make: *** [default] Error 2
_________________________
It appears that the problem is that 'make' allocates space for structures to hold the built-in rules. However, when you run make with the "-r" flag to disable these built-in implicit rules, make still attempts to allocate space for them. Since the space required to hold zero built-in rules is zero bytes, it calls:
malloc(0)
AIX doesn't like such a request, and the malloc fails. Other Unix and Linux platforms seemingly handle this abnormal condition more gracefully.
A temporary work-around is to add a rule such that 'make' mallocs >0 bytes. For example, by changing Makefile to that shown below, the problem is masked and the make continues:
_________________________
%.xxxxx: %.yyyyy
default:
make -r sub.mk
_________________________
|