[tex-live] os.spawn and AR crash mystery resolved
Manuel Pégourié-Gonnard
mpg at elzevir.fr
Thu Apr 22 17:30:52 CEST 2010
Hi Tomek,
T T a écrit :
> On 22 April 2010 00:03, Manuel Pégourié-Gonnard <mpg at elzevir.fr> wrote:
>> Yeah, that's really amazing. Maybe something with the environment that would
>> propagate differently using spawn/exec vs execute?
>
> Manuel, you've been on the right track all along. I finally (almost)
> got to the bottom of it.
>
> The problem is the same as reported in the past for texdoc:
>
> http://www.ntg.nl/pipermail/dev-luatex/2008-September/001771.html
>
> It comes from kpathsea, which changes \ to / in USERPRIFILE var and
> this leads to the dreaded AR crash with "internal error occurred".
Very nice catch!
> I've been unable so far to locate at which point this substitution
> happens, but at least there is an easy fix for that, which I will
> commit shortly:
>
> os.setenv("USERPROFILE", os.getenv("USERPROFILE"):gsub('/', '\\'))
>
Sounds good, while waiting for a proper fix in the engine.
> But it gets even more interesting. This change doesn't seem to happen
> really in the environment but only in the environ variable exported
> from the kpathsea lib. This explains why os.execute() works (as
> reported in the texdoc thread referenced above) and os.spawn()
> doesn't. With os.execute() the child process inherits the environment
> automatically from its parent, while os.spawn() is implemented using
> _spawnvpe() with the environ variable passed for the environment.
>
Nice catch again!
I'm very glad to finally understand this so mysterious problem. Thank you for
getting to the bottom of it, Tomek!
Manuel.
More information about the tex-live
mailing list