Subject: Re: Problem with Linux emulation?
To: None <current-users@netbsd.org>
From: Matthias Scheler <tron@zhadum.de>
List: current-users
Date: 05/12/2002 18:19:39
In article <20020512104703.A22679@domine.ppires.org>,
	Paulo Alexandre Pinto Pires <pappires@ppires.org> writes:
> I checked, and file descriptor 0x16 is my home directory, which is
> NFS-mounted.  My Linux libraries were taken from RedHat 7.1, and they
> used to work very fine before this upgrade.
> 
> Anyone else seen this?

Yes, I reported this problem as PR kern/16349. It's a bug in our
emulation of the 64Bit version of Linux getdents() system call.
If you apply this patch ...

Index: linux_file64.c
===================================================================
RCS file: /cvsroot/syssrc/sys/compat/linux/common/linux_file64.c,v
retrieving revision 1.12
diff -u -r1.12 linux_file64.c
--- linux_file64.c	2002/05/10 14:51:26	1.12
+++ linux_file64.c	2002/05/12 18:18:09
@@ -357,6 +357,7 @@
 	void *v;
 	register_t *retval;
 {
+#ifdef notyet
 	struct linux_sys_getdents_args /* {
 		syscallarg(int) fd;
 		syscallarg(struct linux_dirent64 *) dent;
@@ -500,5 +501,9 @@
 out1:
 	FILE_UNUSE(fp, p);
 	return error;
+#else
+	*retval = -1;
+	return ENOSYS;
+#endif
 }
 #endif /* __mips__ || __i386__ */

... to the latest kernel sources the latest the 64Bit version of the
emulated system call will be deactivated and the problem will not
show up again with "opera" or "netscape". However some problems - the
latest JDK? - which needs this call won't work anymore.

	Kind regards

-- 
Matthias Scheler                                  http://scheler.de/~matthias/