Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 May 2015 08:54:34 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 200439] Executing 32 bit binary under 10.1/amd64
Message-ID:  <bug-200439-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=200439

            Bug ID: 200439
           Summary: Executing 32 bit binary under 10.1/amd64
           Product: Base System
           Version: 10.1-RELEASE
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: freebsd@natsoft.com.au

The fcntl call in the following code will produce an error#14 if it is compiled
static under 32 bit FreeBSD and executed on FreeBSD 10.1 amd64
ie "Could not lock TestLock.TXT Error:14"
This code does not produce an error when run under FreeBSD 10.0 amd64
It does not produce an error if run under FreeBSD 10.1 i386
It does not product an error if compiled 64 bit and run under FreeBSD 10.1
amd64
I used FreeBSD 7.0 to compile the code with the following command:
cc testlock.c -otestlock -static

If I move the "struct flock oLock" out of the function and make it global by
placing immediately prior to main after the stdio.h include the code works in
all instances. There must be an issue with running i386 code when the struct is
defined inside the function. All is ok when the struct is defined globally
outside of the function.

#include <errno.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
int main(int iArgv, char** cpArgc)
{
        struct flock oLock;
        int iFile;
        iFile = open("TestLock.TXT",O_CREAT|O_RDWR,0666);
        if (iFile <= 0)
        {
                printf("Could not open TestLock.TXT Error:%d\r\n",errno);
                return 0;
        }
        oLock.l_type = F_WRLCK;
        oLock.l_whence = SEEK_SET;
        oLock.l_start = 0;
        oLock.l_len = 1;
        if (fcntl(iFile,F_SETLK,&oLock) < 0)
        {
                printf("Could not lock TestLock.TXT Error:%d\r\n",errno);
                return 0;
        }
        close(iFile);
        return 0;
}

-- 
You are receiving this mail because:
You are the assignee for the bug.



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