From owner-freebsd-x11@FreeBSD.ORG Mon Jun 17 21:20:02 2013 Return-Path: Delivered-To: freebsd-x11@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 5809A8B0 for ; Mon, 17 Jun 2013 21:20:02 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 491BC1076 for ; Mon, 17 Jun 2013 21:20:02 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r5HLK2FM042620 for ; Mon, 17 Jun 2013 21:20:02 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r5HLK2TR042619; Mon, 17 Jun 2013 21:20:02 GMT (envelope-from gnats) Date: Mon, 17 Jun 2013 21:20:02 GMT Message-Id: <201306172120.r5HLK2TR042619@freefall.freebsd.org> To: freebsd-x11@FreeBSD.org Cc: From: Dimitry Andric Subject: Re: ports/179625: x11-servers/xorg-server built with clang does not work, needs USE_GCC=any X-BeenThere: freebsd-x11@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Dimitry Andric List-Id: X11 on FreeBSD -- maintaining and support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Jun 2013 21:20:02 -0000 The following reply was made to PR ports/179625; it has been noted by GNATS. From: Dimitry Andric To: mexas@bristol.ac.uk Cc: bug-followup@FreeBSD.org, Jung-uk Kim , Niclas Zeising Subject: Re: ports/179625: x11-servers/xorg-server built with clang does not work, needs USE_GCC=any Date: Mon, 17 Jun 2013 23:18:43 +0200 --Apple-Mail=_C3BEED31-6A73-4D53-9F4C-B6B88549E1BB Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On Jun 17, 2013, at 14:00, Anton Shterenlikht wrote: > The patch applied cleanly (yes, I'm still on r249781). > The commands you wrote also run with no problems. > However, rebuilding xorg-server with patched clang, > and removing USE_GCC, did not help. The X error > is still the same: >=20 > (EE) Jun 17 12:51:23 NVIDIA(0): Failed to initialize default colormap > (EE) NVIDIA(0): *** Aborting *** >=20 > Fatal server error: > AddScreen/ScreenInit failed for driver 0 Okay, so the optimizer was not the issue then. :-) Luckily I was able to reproduce your error, after realizing you were using the old X.org server (version 1.7.7). As far as I can tell, this is the following bug: https://bugs.freedesktop.org/show_bug.cgi?id=3D18451 which is fixed by this commit: = http://cgit.freedesktop.org/xorg/xserver/commit/?id=3D6dae7f3792611aace1df= 0cca63bf50c50d93de43 I'm attaching a diff for our x11-servers/xorg-server port, can you please try it? E.g. from the root of your ports tree, run: patch -p0 -f -F0 -i x11-servers__xorg-server__fix-xace-callback-1.diff which should modify x11-servers/xorg-server/Makefile, and add an additional patch (extra-Xext-xace.c) to the files subdirectory. Then rebuild and reinstall the xorg-server port. -Dimitry --Apple-Mail=_C3BEED31-6A73-4D53-9F4C-B6B88549E1BB Content-Disposition: attachment; filename=x11-servers__xorg-server__fix-xace-callback-1.diff Content-Type: application/octet-stream; name="x11-servers__xorg-server__fix-xace-callback-1.diff" Content-Transfer-Encoding: 7bit Index: x11-servers/xorg-server/Makefile =================================================================== --- x11-servers/xorg-server/Makefile (revision 321017) +++ x11-servers/xorg-server/Makefile (working copy) @@ -33,7 +33,8 @@ ${FILESDIR}/extra-os-utils.c \ ${FILESDIR}/extra-Xserver-hw-xfree86-os-support-bsd-sparc64_video.c \ ${FILESDIR}/extra-Xserver-os-xprintf.c \ - ${FILESDIR}/extra-servermd.h + ${FILESDIR}/extra-servermd.h \ + ${FILESDIR}/extra-Xext-xace.c .endif USE_BZIP2= yes Index: x11-servers/xorg-server/files/extra-Xext-xace.c =================================================================== --- x11-servers/xorg-server/files/extra-Xext-xace.c (revision 0) +++ x11-servers/xorg-server/files/extra-Xext-xace.c (working copy) @@ -0,0 +1,211 @@ +--- Xext/xace.c.orig 2010-04-21 04:00:26.000000000 +0200 ++++ Xext/xace.c 2013-06-17 23:02:08.000000000 +0200 +@@ -87,7 +87,18 @@ void XaceHookAuditEnd(ClientPtr ptr, int + */ + int XaceHook(int hook, ...) + { +- pointer calldata; /* data passed to callback */ ++ union { ++ XaceResourceAccessRec res; ++ XaceDeviceAccessRec dev; ++ XaceSendAccessRec send; ++ XaceReceiveAccessRec recv; ++ XaceClientAccessRec client; ++ XaceExtAccessRec ext; ++ XaceServerAccessRec server; ++ XaceScreenAccessRec screen; ++ XaceAuthAvailRec auth; ++ XaceKeyAvailRec key; ++ } u; + int *prv = NULL; /* points to return value from callback */ + va_list ap; /* argument list */ + va_start(ap, hook); +@@ -99,117 +110,86 @@ int XaceHook(int hook, ...) + */ + switch (hook) + { +- case XACE_RESOURCE_ACCESS: { +- XaceResourceAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.id = va_arg(ap, XID); +- rec.rtype = va_arg(ap, RESTYPE); +- rec.res = va_arg(ap, pointer); +- rec.ptype = va_arg(ap, RESTYPE); +- rec.parent = va_arg(ap, pointer); +- rec.access_mode = va_arg(ap, Mask); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; ++ case XACE_RESOURCE_ACCESS: ++ u.res.client = va_arg(ap, ClientPtr); ++ u.res.id = va_arg(ap, XID); ++ u.res.rtype = va_arg(ap, RESTYPE); ++ u.res.res = va_arg(ap, pointer); ++ u.res.ptype = va_arg(ap, RESTYPE); ++ u.res.parent = va_arg(ap, pointer); ++ u.res.access_mode = va_arg(ap, Mask); ++ u.res.status = Success; /* default allow */ ++ prv = &u.res.status; ++ break; ++ case XACE_DEVICE_ACCESS: ++ u.dev.client = va_arg(ap, ClientPtr); ++ u.dev.dev = va_arg(ap, DeviceIntPtr); ++ u.dev.access_mode = va_arg(ap, Mask); ++ u.dev.status = Success; /* default allow */ ++ prv = &u.dev.status; ++ break; ++ case XACE_SEND_ACCESS: ++ u.send.client = va_arg(ap, ClientPtr); ++ u.send.dev = va_arg(ap, DeviceIntPtr); ++ u.send.pWin = va_arg(ap, WindowPtr); ++ u.send.events = va_arg(ap, xEventPtr); ++ u.send.count = va_arg(ap, int); ++ u.send.status = Success; /* default allow */ ++ prv = &u.send.status; ++ break; ++ case XACE_RECEIVE_ACCESS: ++ u.recv.client = va_arg(ap, ClientPtr); ++ u.recv.pWin = va_arg(ap, WindowPtr); ++ u.recv.events = va_arg(ap, xEventPtr); ++ u.recv.count = va_arg(ap, int); ++ u.recv.status = Success; /* default allow */ ++ prv = &u.recv.status; ++ break; ++ case XACE_CLIENT_ACCESS: ++ u.client.client = va_arg(ap, ClientPtr); ++ u.client.target = va_arg(ap, ClientPtr); ++ u.client.access_mode = va_arg(ap, Mask); ++ u.client.status = Success; /* default allow */ ++ prv = &u.client.status; ++ break; ++ case XACE_EXT_ACCESS: ++ u.ext.client = va_arg(ap, ClientPtr); ++ u.ext.ext = va_arg(ap, ExtensionEntry*); ++ u.ext.access_mode = DixGetAttrAccess; ++ u.ext.status = Success; /* default allow */ ++ prv = &u.ext.status; ++ break; ++ case XACE_SERVER_ACCESS: ++ u.server.client = va_arg(ap, ClientPtr); ++ u.server.access_mode = va_arg(ap, Mask); ++ u.server.status = Success; /* default allow */ ++ prv = &u.server.status; + break; +- } +- case XACE_DEVICE_ACCESS: { +- XaceDeviceAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.dev = va_arg(ap, DeviceIntPtr); +- rec.access_mode = va_arg(ap, Mask); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; +- break; +- } +- case XACE_SEND_ACCESS: { +- XaceSendAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.dev = va_arg(ap, DeviceIntPtr); +- rec.pWin = va_arg(ap, WindowPtr); +- rec.events = va_arg(ap, xEventPtr); +- rec.count = va_arg(ap, int); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; +- break; +- } +- case XACE_RECEIVE_ACCESS: { +- XaceReceiveAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.pWin = va_arg(ap, WindowPtr); +- rec.events = va_arg(ap, xEventPtr); +- rec.count = va_arg(ap, int); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; +- break; +- } +- case XACE_CLIENT_ACCESS: { +- XaceClientAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.target = va_arg(ap, ClientPtr); +- rec.access_mode = va_arg(ap, Mask); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; +- break; +- } +- case XACE_EXT_ACCESS: { +- XaceExtAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.ext = va_arg(ap, ExtensionEntry*); +- rec.access_mode = DixGetAttrAccess; +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; +- break; +- } +- case XACE_SERVER_ACCESS: { +- XaceServerAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.access_mode = va_arg(ap, Mask); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; +- break; +- } + case XACE_SCREEN_ACCESS: +- case XACE_SCREENSAVER_ACCESS: { +- XaceScreenAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.screen = va_arg(ap, ScreenPtr); +- rec.access_mode = va_arg(ap, Mask); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; +- break; +- } +- case XACE_AUTH_AVAIL: { +- XaceAuthAvailRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.authId = va_arg(ap, XID); +- calldata = &rec; ++ case XACE_SCREENSAVER_ACCESS: ++ u.screen.client = va_arg(ap, ClientPtr); ++ u.screen.screen = va_arg(ap, ScreenPtr); ++ u.screen.access_mode = va_arg(ap, Mask); ++ u.screen.status = Success; /* default allow */ ++ prv = &u.screen.status; ++ break; ++ case XACE_AUTH_AVAIL: ++ u.auth.client = va_arg(ap, ClientPtr); ++ u.auth.authId = va_arg(ap, XID); ++ break; ++ case XACE_KEY_AVAIL: ++ u.key.event = va_arg(ap, xEventPtr); ++ u.key.keybd = va_arg(ap, DeviceIntPtr); ++ u.key.count = va_arg(ap, int); + break; +- } +- case XACE_KEY_AVAIL: { +- XaceKeyAvailRec rec; +- rec.event = va_arg(ap, xEventPtr); +- rec.keybd = va_arg(ap, DeviceIntPtr); +- rec.count = va_arg(ap, int); +- calldata = &rec; +- break; +- } +- default: { ++ default: + va_end(ap); + return 0; /* unimplemented hook number */ +- } + } + va_end(ap); + + /* call callbacks and return result, if any. */ +- CallCallbacks(&XaceHooks[hook], calldata); ++ CallCallbacks(&XaceHooks[hook], &u); + return prv ? *prv : Success; + } + --Apple-Mail=_C3BEED31-6A73-4D53-9F4C-B6B88549E1BB--