On Mon, Aug 07, 2017 at 09:12:00PM +0200, Matthieu Herrb wrote: > On Mon, Aug 07, 2017 at 09:08:53PM +0200, Mark Kettenis wrote: > > > Date: Mon, 7 Aug 2017 20:53:59 +0200 > > > From: Matthieu Herrb <matth...@herrb.eu> > > > > > > On Mon, Aug 07, 2017 at 05:04:46PM +0200, Mark Kettenis wrote: > > > > > Date: Mon, 7 Aug 2017 16:46:42 +0200 (CEST) > > > > > From: Mark Kettenis <mark.kette...@xs4all.nl> > > > > > > > > > > > Date: Sun, 6 Aug 2017 19:44:49 -0700 > > > > > > From: Max Parmer <m...@trystero.is> > > > > > > > > > > > > >Synopsis: X server segfaults in VESA driver as Linux KVM guest > > > > > > >Category: system > > > > > > >Environment: > > > > > > System : OpenBSD 6.1 > > > > > > Details : OpenBSD 6.1-current (GENERIC.MP) #45: Sat Aug 5 > > > > > > 16:22:04 MDT 2017 > > > > > > > > > > > > dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP > > > > > > > > > > > > Architecture: OpenBSD.amd64 > > > > > > Machine : amd64 > > > > > > >Description: > > > > > > startx crashes with an illegal instruction leaving a jumble of > > > > > > colors on screen. > > > > > > > > > > > > After enabling suid coredumps I retrieved this backtrace: > > > > > > (gdb) bt > > > > > > #0 0x0000169016f7e620 in xf86SlowBcopy () from > > > > > > /usr/X11R6/bin/Xorg > > > > > > #1 0x00001692b393238a in VESASaveRestore () from > > > > > > /usr/X11R6/lib/modules/drivers/vesa_drv.so > > > > > > #2 0x00001692b39314ea in VESAScreenInit () from > > > > > > /usr/X11R6/lib/modules/drivers/vesa_drv.so > > > > > > #3 0x0000169016f147d3 in AddScreen () from /usr/X11R6/bin/Xorg > > > > > > #4 0x0000169016f5dcb2 in InitOutput () from /usr/X11R6/bin/Xorg > > > > > > #5 0x0000169016f18774 in dix_main () from /usr/X11R6/bin/Xorg > > > > > > #6 0x0000169016f01914 in _start () from /usr/X11R6/bin/Xorg > > > > > > #7 0x0000169016f018c0 in ?? () from /usr/X11R6/bin/Xorg > > > > > > #8 0x0000000000000000 in ?? () > > > > > > > > > > Looks like clang is uptimizing xf86SlowBcopy() to use SSE > > > > > instructions. I wouldn't be surprised that those are indeed > > > > > unsupported on memory mapped device memory. Since the whole purpose > > > > > of xf86SlowBcopy to do a bytewise unoptimized copy, we need to tell > > > > > the compiler not to optimize this code. > > > > > > > > FreeBSD fixed this: > > > > > > > > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=202643 > > > > > > Here's an adaptation of Dimitry's patch for xenocara (tested here). > > > > The xf86Init.c bit isn't supposed to be in here is it? > > Ooups no. Glad I only had this small change in this tree :) > > > > The Makefile bits are ok kettenis@ > > > > > Index: hw/xfree86/common/xf86Init.c > > > =================================================================== > > > RCS file: /cvs/OpenBSD/xenocara/xserver/hw/xfree86/common/xf86Init.c,v > > > retrieving revision 1.25 > > > diff -u -p -u -r1.25 xf86Init.c > > > --- hw/xfree86/common/xf86Init.c 9 Aug 2016 18:59:52 -0000 1.25 > > > +++ hw/xfree86/common/xf86Init.c 6 Mar 2017 22:20:33 -0000 > > > @@ -945,6 +945,10 @@ InitOutput(ScreenInfo * pScreenInfo, int > > > > > > RegisterBlockAndWakeupHandlers((BlockHandlerProcPtr) NoopDDA, > > > xf86Wakeup, > > > NULL); > > > +#ifdef X_PRIVSEP > > > + ErrorF("enabling local access\n"); > > > + LocalAccessScopeUser(); > > > +#endif > > > } > > > > > > /** > > > Index: hw/xfree86/os-support/misc/Makefile.am > > > =================================================================== > > > RCS file: > > > /cvs/OpenBSD/xenocara/xserver/hw/xfree86/os-support/misc/Makefile.am,v > > > retrieving revision 1.4 > > > diff -u -p -u -r1.4 Makefile.am > > > --- hw/xfree86/os-support/misc/Makefile.am 2 May 2014 19:27:49 > > > -0000 1.4 > > > +++ hw/xfree86/os-support/misc/Makefile.am 7 Aug 2017 18:31:57 > > > -0000 > > > @@ -7,6 +7,11 @@ libmisc_la_SOURCES = SlowBcopy.c > > > > > > AM_CPPFLAGS = $(XORG_INCS) > > > > > > -AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS) > > > +if I386_VIDEO > > > +NOSSE_CFLAGS = -mno-sse > > > +endif > > > + > > > +AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS) $(NOSSE_CFLAGS) > > > + > > > > > > EXTRA_DIST = $(I386_SRCS) $(PORTIO_SRCS) > > > Index: hw/xfree86/os-support/misc/Makefile.in > > > =================================================================== > > > RCS file: > > > /cvs/OpenBSD/xenocara/xserver/hw/xfree86/os-support/misc/Makefile.in,v > > > retrieving revision 1.33 > > > diff -u -p -u -r1.33 Makefile.in > > > --- hw/xfree86/os-support/misc/Makefile.in 11 Oct 2016 22:15:56 > > > -0000 1.33 > > > +++ hw/xfree86/os-support/misc/Makefile.in 7 Aug 2017 18:37:58 > > > -0000 > > > @@ -475,7 +475,8 @@ libmisc_la_SOURCES = SlowBcopy.c > > > > > > #AM_LDFLAGS = -r > > > AM_CPPFLAGS = $(XORG_INCS) > > > -AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS) > > > +@I386_VIDEO_TRUE@NOSSE_CFLAGS = -mno-sse > > > +AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS) $(NOSSE_CFLAGS) > > > EXTRA_DIST = $(I386_SRCS) $(PORTIO_SRCS) > > > all: all-am > > > > > > > > > -- > > > Matthieu Herrb > > > > > -- > Matthieu Herrb
Issue is fixed for me in the 8/8 snapshot, thanks! -- 0x7D964D3361142ACF