Subject: symbolic links in emulated processes
To: None <current-users@netbsd.org>
From: Arto Huusko <arto.huusko@pp2.inet.fi>
List: current-users
Date: 09/17/2007 23:58:42
Hello,

has the handling of symbolic links in emulated processes changed
recently?

I had some trouble with linux java (sun-jdk15 pkg) on i386,
first on 4.99.20 kernel and now with current from yesterday:
jvm couldn't find its stack location, and no information
about the user (for example, system prop "user.dir" got value
"?").

ktrace of the process revealed this:

   996      1 java     NAMI  "/emul/linux/etc/nsswitch.conf"
   996      1 java     RET   open -1 errno -40 Too many levels of
symbolic links

/emul/linux/etc/nsswitch.conf was a symbolic link to /etc/nsswitch.conf.
I guess it tries to resolve the symbolic link under emulation rules,
so it ends up looking at the link again and again, until it gives up.

The stack location stuff got screwed for the same reason, because
/emul/linux/proc was a symlink to /proc.

I know for sure that this config used to work, even sometime earlier
this year, so the change should be quite recent?

One way to fix the problem is of course to make the symlinks point to
/../whatever.