Date: Thu, 3 Jun 2004 13:35:43 -0700 (PDT) From: Willem Jan Withagen <wjw@withagen.nl> To: freebsd-gnats-submit@FreeBSD.org Subject: kern/67546: Coredumps > 2Gb do not work (on 64bits platforms) Message-ID: <200406032035.i53KZhQV090871@www.freebsd.org> Resent-Message-ID: <200406032040.i53KeMhh032745@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 67546
>Category: kern
>Synopsis: Coredumps > 2Gb do not work (on 64bits platforms)
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Jun 03 13:40:22 PDT 2004
>Closed-Date:
>Last-Modified:
>Originator: Willem Jan Withagen
>Release: 5.2.-CURRENT
>Organization:
Digiware
>Environment:
FreeBSD opteron.digiware.nl 5.2-CURRENT FreeBSD 5.2-CURRENT #12: Mon May 31 22:11:43 CEST 2004 wjw@opteron.digiware.nl:/usr/obj/home2/src/sys/OPTERON.amd64 amd64
>Description:
When allocating memoryblocks > 2Gb and the program crashes, then it is not able to write a coredump. This is due to faulty parameter specification since int <> long on 64bits platforms. Correct (proto)typing of the lenght corrects the problem.
>How-To-Repeat:
cd /usr/ports/devel/cocktail; make patch
cd work/cocktail-9309/reuse/m2c; make test
./rMemoryDrv
>Fix:
--- sys/kern/vfs_vnops.c.org Mon May 31 22:42:48 2004
+++ sys/kern/vfs_vnops.c Mon May 31 23:27:46 2004
@@ -370,7 +370,7 @@
enum uio_rw rw;
struct vnode *vp;
caddr_t base;
- int len;
+ size_t len;
off_t offset;
enum uio_seg segflg;
int ioflg;
@@ -460,7 +460,7 @@
enum uio_rw rw;
struct vnode *vp;
caddr_t base;
- int len;
+ size_t len;
off_t offset;
enum uio_seg segflg;
int ioflg;
--- sys/sys/vnode.h.org Mon May 31 21:57:28 2004
+++ sys/sys/vnode.h Mon May 31 21:58:38 2004
@@ -658,11 +658,11 @@
void vn_pollgone(struct vnode *vp);
int vn_pollrecord(struct vnode *vp, struct thread *p, int events);
int vn_rdwr(enum uio_rw rw, struct vnode *vp, caddr_t base,
- int len, off_t offset, enum uio_seg segflg, int ioflg,
+ u_int64_t len, off_t offset, enum uio_seg segflg, int ioflg,
struct ucred *active_cred, struct ucred *file_cred, int *aresid,
struct thread *td);
int vn_rdwr_inchunks(enum uio_rw rw, struct vnode *vp, caddr_t base,
- int len, off_t offset, enum uio_seg segflg, int ioflg,
+ u_int64_t len, off_t offset, enum uio_seg segflg, int ioflg,
struct ucred *active_cred, struct ucred *file_cred, int *aresid,
struct thread *td);
int vn_stat(struct vnode *vp, struct stat *sb, struct ucred *active_cred,
>Release-Note:
>Audit-Trail:
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406032035.i53KZhQV090871>
