Xorg 1.5.1 SEGV on Solaris 10

Alan Coopersmith Alan.Coopersmith at Sun.COM
Thu Nov 20 07:45:09 PST 2008


I haven't needed any special options for libpciaccess on Solaris Nevada, though
I have made a number of fixes along the way that are in the libpciaccess 0.10.4
release (and a couple more minor ones in the latest git not yet released).

I've also had to finish the transition of the Xorg PCI code for Solaris to being
pure libpciaccess, without the old direct PCI accessing code - those commits are
only in the master branch so far - the set I've pulled into the 1.5.3 builds I'm
working on packaging for OpenSolaris is (I think this includes all the
interdependencies, but haven't verified just this set - our build includes a
bunch more patches for other changes, not all of which I've pushed upstream
yet):

9719354ae04a41e9834ac9ba8fd9e895092ba4f1
From: Adam Jackson <ajax at redhat.com>
Date: Tue, 24 Jun 2008 14:37:06 -0400
Subject: [PATCH] Check for __amd64__, not __x86_64__

9ed9d98dec58d1f7468d02c4b951811b8e1ca7c1
From: Julien Cristau <jcristau at debian.org>
Date: Tue, 24 Jun 2008 22:36:32 +0200
Subject: [PATCH] x86emu: fix build, fallout from 9719354

e1ae8db625b5e8c298a557592ef23656b3da4886
From: Adam Jackson <ajax at redhat.com>
Date: Mon, 18 Aug 2008 09:53:48 -0400
Subject: [PATCH] Drop dead PowerPC PCI code.

3c03d9f1efbbacec6e8be58da99bf0977a8e0fec
From: Adam Jackson <ajax at redhat.com>
Date: Mon, 18 Aug 2008 14:37:42 -0400
Subject: [PATCH] Remove sparcPci.c

cc78d977cac74fcfb7c9b27e7109a1e369018dd8
From: Alan Coopersmith <alan.coopersmith at sun.com>
Date: Fri, 22 Aug 2008 10:14:11 -0700
Subject: [PATCH] Convert Solaris #ifdef's for <sys/kd.h> to AC_CHECK_HEADERS check

70e18a3b6b9d52169bca650f6cd4ef5d8ab40d95
From: Alan Coopersmith <alan.coopersmith at sun.com>
Date: Thu, 30 Oct 2008 20:38:34 -0700
Subject: [PATCH] Refactor Solaris mapping code to work with standard shared/vidmem.c

570835b9a89187a36e08defbccc56051bb349b52
From: Alan Coopersmith <alan.coopersmith at sun.com>
Date: Wed, 19 Nov 2008 10:19:20 -0800
Subject: [PATCH] Use bsd_pci stub routines on Solaris too, since we use
pciaccess for real work

I've not tried any of this on Solaris 10 though.

	-Alan Coopersmith-           alan.coopersmith at sun.com
	 Sun Microsystems, Inc. - X Window System Engineering

Pat Kane wrote:
> The PCI scanning code works much better if I boot into a 32bit Solaris kernel
> rather than a 64bit one.
> 
> Does libpciaccess need special compiler options for 64bit machines?
> 
> Pat
> ---
> P.S.  See bugzilla 17924 for grim details.
> 
> On Fri, Oct 3, 2008 at 10:57 AM, Pat Kane <pekane52 at gmail.com> wrote:
>> I just got Xorg 1.5.1 built on my Solaris 10 box, with much advice
>> from this list, thank you.
>>
>> The X server gets a SEGV while scanning the PCI bus, see debug output below,
>> has anyone else seen this problem?
>>
>> Pat
>> ---
>>
>> # mdb ./Xorg
>>> :r
>> X.Org X Server 1.5.1
>> Release Date: 23 September 2008
>> X Protocol Version 11, Revision 0
>> Build Operating System: SunOS 5.10 i86pc
>> Current Operating System: SunOS ultra20m2 5.10 i86pc
>> Build Date: 03 October 2008  11:09:25AM
>>
>>        Before reporting problems, check http://wiki.x.org
>>        to make sure that you have the latest version.
>> Module Loader present
>> Markers: (--) probed, (**) from config file, (==) default setting,
>>        (++) from command line, (!!) notice, (II) informational,
>>        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
>> (==) Log file: "/big/homea/kane/HgRepo386/Xorg/var/log/Xorg.0.log",
>> Time: Fri Oct  3 10:24:40 2008
>> (EE) Unable to locate/open config file
>> mdb: stop on SIGSEGV
>> mdb: target stopped at:
>> libpciaccess.so.0`probe_dev+0x328:      movb   %al,0xec(%ecx,%edx)
>>> $C
>> 08047bd8 libpciaccess.so.0`probe_dev+0x328(e, 8047c10, 8245540, fef83f49)
>> 08047c48 libpciaccess.so.0`do_probe+0x8d(e, 8245540, fefb07e8, fef839f1)
>> 08047c78 libpciaccess.so.0`pci_system_solx_devfs_create+0x106(59,
>> 8218600, 8047c98, 80d26d9, 0, 8218600)
>> 08047c88 libpciaccess.so.0`pci_system_init+0x1f(0, 8218600, 8047cd8,
>> 80e866f, 821ac00, 6)
>> 08047c98 xf86scanpci+0x1f(821ac00, 6, 0, 8047e48, 821b3c0, 8218600)
>> 08047cd8 xf86PciProbe+0x26(8218600)
>> 08047ce8 xf86BusProbe+0x18(fefdeb56, feffa288, 8047e48, 8243be0,
>> 8218600, 8047d60)
>> 08047d78 InitOutput+0x157(8244760, 1, 8047e00, 809a68a)
>> 08047ddc main+0x397(1, 8047e00, 8047e08)
>> 08047df4 _start+0x80(1, 8047eb0, 0, 8047eb5, 8047ec9, 8047ed6)
>>> $?
>> process id = 18649
>> SIGSEGV: Segmentation Fault
>> %cs = 0x003b            %eax = 0x0000006b
>> %ds = 0x0043            %ebx = 0xfef94b84
>> %ss = 0x0043            %ecx = 0x000121c8
>> %es = 0x0043            %edx = 0x0824ad88
>> %fs = 0x0000            %esi = 0x08245540
>> %gs = 0x01c3            %edi = 0x08047e48
>>
>>  %eip = 0xfef83f0f libpciaccess.so.0`probe_dev+0x328
>>  %ebp = 0x08047bd8
>> %kesp = 0x00000000
>>
>> %eflags = 0x00010212
>>  id=0 vip=0 vif=0 ac=0 vm=0 rf=1 nt=0 iopl=0x0
>>  status=<of,df,IF,tf,sf,zf,AF,pf,cf>
>>
>>   %esp = 0x08047b80
>> %trapno = 0xe
>>   %err = 0x6
>>> 0xfef83f0f::dis
>> libpciaccess.so.0`probe_dev+0x306:      movl   0x10(%ebp),%eax
>> libpciaccess.so.0`probe_dev+0x309:      movl   0x4(%eax),%edx
>> libpciaccess.so.0`probe_dev+0x30c:      movl   %edx,%eax
>> libpciaccess.so.0`probe_dev+0x30e:      shll   $0x5,%eax
>> libpciaccess.so.0`probe_dev+0x311:      addl   %edx,%eax
>> libpciaccess.so.0`probe_dev+0x313:      leal   0x0(,%eax,8),%ecx
>> libpciaccess.so.0`probe_dev+0x31a:      movl   0x8(%esi),%edx
>> libpciaccess.so.0`probe_dev+0x31d:      movl   -0x3c(%ebp),%eax
>> libpciaccess.so.0`probe_dev+0x320:      andl   $0xff0000,%eax
>> libpciaccess.so.0`probe_dev+0x325:      shrl   $0x10,%eax
>> libpciaccess.so.0`probe_dev+0x328:      movb   %al,0xec(%ecx,%edx)    <---
>> libpciaccess.so.0`probe_dev+0x32f:      movl   0x10(%ebp),%eax
>> libpciaccess.so.0`probe_dev+0x332:      incl   0x4(%eax)
>> libpciaccess.so.0`probe_dev+0x335:      cmpb   $0x0,-0x3a(%ebp)
>>
> _______________________________________________
> xorg mailing list
> xorg at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xorg





More information about the xorg mailing list