Hello, I investigated a bit and found the issue, which probably explains quite a few other bugs:
- I added fprintf(stderr,"%s:%s", __FILE__, __func__); fflush(stderr); basically in all EBUSY places in libdiskfs, libnetfs, libfshelp - I got it from libnetfs/netfs_S_file_set_translator. That didn't make sense, since when making a symlink we just create the file, and then set the translator once. - Just to be sure, I printed np->nn_stat.st_mode. I got 0xffffffff, d'oh... - Since that comes from netfs_validate_stat, I printed there np->nn_stat.st_mode, it was indeed 0xffffffff, and just to be sure, I printed netfs_node_netnode (np)->faked, I got 0xcb and 0x4ca, which don't make sense since it's supposed to be FAKE_* bits only! - I thus checked the netnode allocator, new_node(), it indeed doesn't initialize the faked field. For regular files, the caller initializes it, but for anonymous files (typically symlinks), it wasn't done. Thus the quite random issue only with symlinks, and dh_install -plocales-all happens to create a huge lot of them. Svante, thanks a lot for the investigate, and you'll probably want to try the gnat build again. Samuel