Hm, another thing that's a little strange is what happens if I just load the undumped module:
pelix:~/Pike/7.3/build% /pike/home/marcus/Pike/7.3/build/pike -DNOT_INSTALLED -DPRECOMPILED_SEARCH_MORE -m/pike/home/marcus/Pike/7.3/build/master.pike -e 'Array;' BEGIN_CYCLIC(Array, 327118 [-]) BEGIN_CYCLIC(__builtin, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(__builtin, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(Array, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) *** END_CYCLIC(Array, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(__builtin, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(__builtin, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(Array, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(Array, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(Array, 327118 [-]) BEGIN_CYCLIC(Array, 327118 [-]) END_CYCLIC(Array, 327118 [-]) pelix:~/Pike/7.3/build%
For some reason, the recursive resolutions of __builtin and Array that happens at *** when dumping are not made here. How come?
/ Marcus Comstedt (ACROSS) (Hail Ilpalazzo!)
Previous text:
2002-11-27 12:51: Subject: Image.SSL?
Ok, this time I think I have it, actually. :-)
I added trace outputs to the BEGIN/END_CYCLIC calls in resolve_identifier(). The working dump:
BEGIN_CYCLIC(__builtin, 323080 [../lib/modules/Array.pmod]) END_CYCLIC(__builtin, 323080 [../lib/modules/Array.pmod]) BEGIN_CYCLIC(Array, 323080 [../lib/modules/Array.pmod]) BEGIN_CYCLIC(__builtin, 349f78 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(__builtin, 349f78 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(Array, 349f78 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(Array, 349f78 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(__builtin, 349f78 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(__builtin, 349f78 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(Array, 349f78 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(Array, 349f78 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(Array, 323080 [../lib/modules/Array.pmod]) BEGIN_CYCLIC(__builtin, 323080 [../lib/modules/Array.pmod]) END_CYCLIC(__builtin, 323080 [../lib/modules/Array.pmod]) BEGIN_CYCLIC(Array, 323080 [../lib/modules/Array.pmod]) END_CYCLIC(Array, 323080 [../lib/modules/Array.pmod])
The nonworking dump:
BEGIN_CYCLIC(__builtin, 323080 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(__builtin, 323080 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(Array, 323080 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(__builtin, 323080 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(__builtin, 323080 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(Array, 323080 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) #### /pike/home/marcus/Pike/7.3/lib/modules/Array.pmod: /pike/home/marcus/Pike/7.3/lib/modules/Array.pmod:671:Recursive module dependency in Array. END_CYCLIC(Array, 323080 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(Array, 323080 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod])
So the difference is that in the working case, two levels of recursion are allowed due to the resolved program and the compile_string:ed program having differemt paths, while in the nonworking case only one level of recursion is allowed, and this is (apparently) not enough. The problem only occurs when the source dir for dumping is in the module path (which it isn't in the `make install' case, since dumping is done from the installed directory, while the module path still points to the build tree).
What bugs me is that you claim that you can dump Array.pmod with only one level of recursion. Would you mind adding the same trace outputs to your pike? (You'll have to revert Array.pmod to rev 1.77 to get around Nilssons malevolent removal of the circular dependency.)
/ Marcus Comstedt (ACROSS) (Hail Ilpalazzo!)