Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 May 2003 09:36:40 -0500
From:      Dan Nelson <dnelson@allantgroup.com>
To:        Bogdan TARU <bgd@icomag.de>
Cc:        Dag-Erling Smorgrav <des@ofug.org>
Subject:   Re: linux binary blues
Message-ID:  <20030520143639.GA26422@dan.emsphone.com>
In-Reply-To: <20030520094427.K78063-100000@fw.office.icom>
References:  <xzpaddoa8a2.fsf@flood.ping.uio.no> <20030520094427.K78063-100000@fw.office.icom>

next in thread | previous in thread | raw e-mail | index | archive | help
In the last episode (May 20), Bogdan TARU said:
> So, I have installed linux_kdump package, tried to run 'ktrace' on my
> binary and then analyze the ktrace.out with 'linux_kdump'. This is
> the point where it ain't working no more on the 4.7 jail system:
> 
>  73506 engine   NAMI  "/var/run/engine.pid"
>  73506 engine   RET   linux_open 3
>  73506 engine   CALL  linux_fcntl64(0x3,0x6,0xbfbfe7b0)
>  73506 engine   RET   linux_fcntl64 -1 errno 22 Invalid argument
> 
>  And it works on the 4.8 jail system:
> 
>  31291 engine   NAMI  "/var/run/engine.pid"
>  31291 engine   RET   linux_open 3
>  31291 engine   CALL  linux_fcntl64(0x3,0x6,0xbfbfe820)
>  31291 engine   RET   linux_fcntl64 0
> 
> So, again, any ideas why this linux binary can get a lock on the
> '/var/run/engine.pid' file under a freebsd 4.8 jail, and cannot on a
> 4.7 jail?

There were fixes to the linux_fcntl64 syscall that went in between 4.7
and 4.8:

revision 1.72
date: 2002/12/08 18:30:44;  author: iedowse;  state: Exp;  lines: +33 -39

	Fix emulation of the fcntl64() syscall. In Linux, this is
	exactly the same as fcntl() except that it supports the new
	64-bit file locking commands (LINUX_F_GETLK64 etc) that use the
	`flock64' structure. We had been interpreting all flock
	structures passed to fcntl64() as `struct flock64' instead of
	only the ones from F_*64 commands.

	The glibc in linux_base-7 uses fcntl64() by default, but the
	bug was often non-fatal since the misinterpretation typically
	only causes junk to appear in the `l_len' field and most junk
	values are accepted as valid range lengths. The result is
	occasional EINVAL errors from F_SETLK and a few bytes after the
	supplied `struct flock' getting clobbered during F_GETLK.

revision 1.41.2.6
date: 2003/01/06 09:19:43;  author: fjoe;  state: Exp;  lines: +43 -47

	MFC: fcntl64 fixes

-- 
	Dan Nelson
	dnelson@allantgroup.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030520143639.GA26422>