For those following along, I may have been premature in my declaration of
total victory, as the solution only seems to work with pike 7.9 (where it
seems to work with very few issues). When used with 7.8, I get lots of
errors like so:
/usr/local/pike/7.8.352/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod:161:Got
placeholder object when indexing module HTTP with 'Query'. (Resolver
problem.)
The problem appears to be the programs and objects mappings in the master.
If I replace either, these problems happen. If use the existing mappings
from the current master (moved before using replace_master()), things work
properly. If I do a shallow copy, things fail, so I'm inclined to believe
that somethings holding on to those mappings, perhaps in dirnode().
Note that at this point, the error occurs before trying to use multiple
compile environments; so it doesn't seem like it could be a matter of
disjoint data for the resolver.
I haven't compared the differences between the two masters, but I know
that changes were made to the resolver, correct?
Anyhow care to venture a guess as to the source of the problem?
Bill
On Thu, 15 Mar 2012, H. William Welliver III wrote:
It turns out that using `->symbol and some other minor magic can be
used to solve all of the problems I've been concerned about. I've run
some simple tests that show two different threads with independent
module/program paths that seem to be (almost) completely isolated from
each other. The only code they share with each other is the standard set
of static modules (which is an acceptable situation that could also be
changed).