• Re: Xorg segfaults on iMac G3 with Rage 128 Pro

    From Paul Wise@21:1/5 to Ben Westover on Sun Apr 16 05:00:02 2023
    On Sat, 2023-04-15 at 15:46 -0400, Ben Westover wrote:

    My system is up to date as of April 15, 2023; I'm running kernel 6.1.0-7-powerpc with Mesa 22.3.6. Does anyone how to fix this problem?

    I think you will need to do some debugging, there are some tips here:

    https://x.org/wiki/Development/Documentation/ServerDebugging/

    --
    bye,
    pabs

    https://wiki.debian.org/PaulWise

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEYQsotVz8/kXqG1Y7MRa6Xp/6aaMFAmQ7Y8cACgkQMRa6Xp/6 aaMayQ//a0I9Fs0oF2WunCQD20QLec2BArk8h5JECWDG9UTRqr+jEUtEl8amDZF2 ZFXDYUddXfCMhpz8KvIk6IDoY3dHOzy4GPgsrPhrecR9G2y2vCoP1dO9M79G5zp7 odbQ0oiNeA/WqpWqwwuUEfM7HT2l19o+ZO0u9Vjb11M2jQOdoJ/REcrDRG7DHERf eZ3IuoCEixXQ/sJjPx/Xitq7JpV2CV3UU0+C3Wds+R7M0QzTQ742Q8tOAJMVE2E8 sDnVtjf4WZot5bqnkC5DovK8HQz34ESXZTt4IQbxymzKXZbnJE455sXgGBQWTlUE K6PyuO/ffI2kFlMjq3kgbHVDWkdYV8XxNFAVCaTh7/rmaTLWambFj/jYgCnizIh8 l1EeJlpa/FZZxtjCEAMTIAhNTyb4XrQAJEWMVzQhCCrPozRUG4X4NxI61PD03x6l GdLhCnYqA4FzDTSGkZtl0ILkHrkVXENUFVK0oP9Z2JKRFARoWwH3G9P1AITtsxJL LovoZ32mqgyAgl1f13oM7uM31byi3gRf2vBUiVogC14zKV0X8uwnqQHv7IE7rr/W 86WkJFo2Z+W6wU8hmgeOkod/cKacpDu8E29mzw2XT4zFqTDhYrp5mLneerIsFqYH XFUs6l6CzyH0b5AXnB5hlv/F6C7txmrBbbEIJY6jikucldm9iuA=
    =9lwV
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ben Westover@21:1/5 to Paul Wise on Sun Apr 16 21:10:01 2023
    Copy: debian-powerpc@lists.debian.org

    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------SL2Y0xJegXMvqkAskjrfUDMW
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    SGksDQoNCk9uIDQvMTUvMjMgMTA6NTbigK9QTSwgUGF1bCBXaXNlIHdyb3RlOg0KPiBJIHRo aW5rIHlvdSB3aWxsIG5lZWQgdG8gZG8gc29tZSBkZWJ1Z2dpbmcsIHRoZXJlIGFyZSBzb21l IHRpcHMgaGVyZToNCj4gDQo+IGh0dHBzOi8veC5vcmcvd2lraS9EZXZlbG9wbWVudC9Eb2N1 bWVudGF0aW9uL1NlcnZlckRlYnVnZ2luZy8NCg0KSSdtIHByb2JhYmx5IGRvaW5nIHNvbWV0 aGluZyB3cm9uZyAobmV2ZXIgdXNlZCBnZGIgYmVmb3JlKSwgYnV0IFhvcmcgDQpjbG9zZXMg YWxtb3N0IGluc3RhbnRseSBhZnRlciBJIHJ1biBpdCBzbyB0aGVyZSdzIG5vdCBlbm91Z2gg dGltZSB0byANCmxhdW5jaCBnZGIgYmVmb3JlIGl0J3MgYWxyZWFkeSBzZWdmYXVsdGVkLiBJ dCBzb3VuZHMgbGlrZSB0aGVzZSB0aXBzIGFyZSANCmZvciB3aGVuIFhvcmcgbGF1bmNoZXMg YW5kIHJ1bnMgZm9yIGEgYml0IGJ1dCBjcmFzaGVzIHdoZW4gYSBzcGVjaWZpYyANCmFjdGlv biBpcyBwZXJmb3JtZWQuDQoNCi0tDQpCZW4gV2VzdG92ZXINCg==

    --------------SL2Y0xJegXMvqkAskjrfUDMW--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEOGnacqRhdU6eNmtFwxHF9U6JtpgFAmQ8R7EFAwAAAAAACgkQwxHF9U6JtphK Bw/8CMkq4yAVf3Y8wrNJMAi8FMHgDmZnOmLkmDk5CqHxeVAZfCvATNKKZP1fu+WqBdYeAMEZVFte GBgvD32ZS5S7aEJEefhGNijAPu4n7ci5NDr6SPU1LYocKb2wnyJ6TghRhQjBH5yQJw0blF2xyIgO ohxfYBVSe2bGMvYYR+oYa+sByH0/ol1U/3z6Sc7pg6q5ylztQtKCBYFAvI8KI/WvHWkEgXQ8p7dD 2/6bZJHn+xsXowRorUPh9kD3m5MUFcvkl1Lgm3s4KjkIFZ4BsYTlBrj1rLST0YsOtvEWkqWe30+i UX99z+UccyKiJDTRjDVMKsbCwYdehupg/YJUy3CzguUKK/LtCVHJyiRoXm4XRoHJlhoXoi9GTOZx L61EfrijOq3ZtWT12b81XdWiNrjp2ZASCC4oFVNG9aOX2pETQU/Z6yqtLAaXfkORveiPaIo1KV8V p2oO2+CihttDH28TlgUr9R5sNyIn9bcaFTU4H5uYtnb7xqnYkei89TLyDUWjsTzfAAN348nQJQKg HWOYgxa4Z6x0ssKJvR2O/1Ts/Jr5rH9IsX62bHODKAdjr5t+74nDDn/rsoqlYfWN0K7iyGWND/hb jEjVJGGi6nuJPKscFrJMLdlreHslTzXwhsx77GijwL0ieWlA168aas9/DDlSdrMl9Ky4GjqgakO6 W0s=
    =tPL2
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Paul Wise@21:1/5 to Ben Westover on Mon Apr 17 04:20:02 2023
    On Sun, 2023-04-16 at 15:08 -0400, Ben Westover wrote:

    I'm probably doing something wrong (never used gdb before), but Xorg
    closes almost instantly after I run it so there's not enough time to
    launch gdb before it's already segfaulted. It sounds like these tips are
    for when Xorg launches and runs for a bit but crashes when a specific
    action is performed.

    There is also the case where you launch Xorg via gdb and then run it.

    $ gdb `which Xorg`
    (gdb) run
    (gdb) bt full

    Also, you will need to either install dbgsym packages beforehand
    (possibly using find-dbgsym-packages from debian-goodies), or install
    and enable libdebuginfod-common to let gdb auto-download debug symbols.

    Apart from running Xorg in gdb directly, another method is to install systemd-coredump, enable the Xorg Option NoTrapSignals to disable Xorg
    handling its own crashes, then load the crash dump file into gdb using
    `sudo coredumpctl debug`.

    PS: I'm subscribed, no need to CC me.

    --
    bye,
    pabs

    https://wiki.debian.org/PaulWise

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEYQsotVz8/kXqG1Y7MRa6Xp/6aaMFAmQ8rFwACgkQMRa6Xp/6 aaMHKg/+MHR9GqU0okrGUQTeBi7g0kp3I3eB73YzayuJCw1+E+lNjO3IjbND1hun wIldztJlWKoUqH8pMSkrz0e+LOgm/SaLdAk5RoyI48aDxu9r2jZw9RfAElVx6+h6 YnPLha0P7M9EzxCBGiqXw7HJ2WBafwGp+dqEQ8wPW5dOgq4zBn3CTcvD9/7GlDe/ MxvA1DQ6K3bVtTTloN0mbTWgm2Fypw371TtmT4QexWlgQguT81uzxHUdKtMRRF6r n/fulfecIpYyXg4Yu9I3DoP7fy1FJzVLWAh8R2wQVU61P6KgI7mOGyT+ykq9BxR4 /HvGq8tFtbp6fc9u+qGR+grK1pK91Qb7WnRYf3dG0KcmHUTEVsxOV7nlAxAkIVKz MpFkEBzv9hwi6rm+MpJeTIgv5k9ZhPKxy4lGMOsxazOGhOAs49nTYi9F1LGW7cQz TUd9V+Ykmkb0kjVsSIWBpkDgAnw0edPjiJ0WV4Is9gtMx9GOiqMpUVGSd7rKJ/7M KZTQVFM03kyuZVlsheDdmKkcc3/KEDq8004NyjMYxzU0xAYh+RwmQNmIa6Li8hVH ZGKj7R6xxrySYdCx9KVUZ/Gp8I9f/xEbeChX4UzRfI24miY/djHE9rvkcEP8tEIu bM4FNAHvpkKWc0g2ME57/qfd/JlvXTFqSGoKUBEX6BHuFBqXIIU=
    =Q6VI
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luke Kenneth Casson Leighton@21:1/5 to Ben Westover on Tue Apr 18 10:50:01 2023
    On Tuesday, April 18, 2023, Ben Westover <kwestover.kw@gmail.com> wrote:
    Hello,

    On 4/16/23 10:18 PM, Paul Wise wrote:

    There is also the case where you launch Xorg via gdb and then run it.

    $ gdb `which Xorg`
    (gdb) run
    (gdb) bt full

    Perfect! I was able to get a full backtrace, which is attached. Here's
    the part that I think is important:

    Program received signal SIGSEGV, Segmentation fault.
    0xa6e7cc98 in R128GetConnectorInfoFromBIOS (pScrn=pScrn@entry=0x776620,
    otypes=otypes@entry=0xaffff0f4) at ../../src/r128_output.c:432
    432 ../../src/r128_output.c: No such file or directory.
    (gdb) bt full
    #0 0xa6e7cc98 in R128GetConnectorInfoFromBIOS (pScrn=pScrn@entry=0x776620,
    otypes=otypes@entry=0xaffff0f4) at ../../src/r128_output.c:432
    info = 0x776ed0
    bios_header = <error reading variable bios_header (Cannot
    access memory at address 0x48)>
    offset = <optimized out>
    i = 2

    Here's part of the relevant funtion in r128_output.c [1]:

    void R128GetConnectorInfoFromBIOS(ScrnInfoPtr pScrn, R128OutputType
    *otypes)
    {
    R128InfoPtr info = R128PTR(pScrn);
    uint16_t bios_header, offset;
    uint32_t i;

    for (i = 0; i < R128_MAX_BIOS_CONNECTOR; i++) {
    otypes[i] = OUTPUT_NONE;
    }

    /* non-x86 platform */
    if (!info->VBIOS) {
    otypes[0] = OUTPUT_VGA;
    }

    bios_header = R128_BIOS16(0x48);

    almost certainly a NULL pointer from this macro


    There's more after this, but it seems to crash at that last line,
    failing to read the memory at 0x48 to get the BIOS' connector info.

    see how 0x48 is the same there this tells us R128_BIOS16
    takes a NULL address somehow.

    l.

    --
    ---
    crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68

    <br><br>On Tuesday, April 18, 2023, Ben Westover &lt;<a href="mailto:kwestover.kw@gmail.com">kwestover.kw@gmail.com</a>&gt; wrote:<br>&gt; Hello,<br>&gt;<br>&gt; On 4/16/23 10:18 PM, Paul Wise wrote:<br>&gt;&gt;<br>&gt;&gt; There is also the case where
    you launch Xorg via gdb and then run it.<br>&gt;&gt;<br>&gt;&gt;     $ gdb `which Xorg`<br>&gt;&gt;     (gdb) run<br>&gt;&gt;     (gdb) bt full<br>&gt;<br>&gt; Perfect! I was able to get a full backtrace, which is attached. Here&#39;s<br>&gt; the
    part that I think is important:<br>&gt;<br>&gt;     Program received signal SIGSEGV, Segmentation fault.<br>&gt;     0xa6e7cc98 in R128GetConnectorInfoFromBIOS (pScrn=pScrn@entry=0x776620, otypes=otypes@entry=0xaffff0f4) at ../../src/r128_output.c:
    432<br>&gt;     432     ../../src/r128_output.c: No such file or directory.<br>&gt;     (gdb) bt full<br>&gt;     #0  0xa6e7cc98 in R128GetConnectorInfoFromBIOS (p
  • From Paul Wise@21:1/5 to Luke Kenneth Casson Leighton on Wed Apr 19 04:50:02 2023
    On Tue, 2023-04-18 at 09:42 +0100, Luke Kenneth Casson Leighton wrote:
    On Tuesday, April 18, 2023, Ben Westover wrote:
            /* non-x86 platform */
            if (!info->VBIOS) {
                otypes[0] = OUTPUT_VGA;
            }

            bios_header = R128_BIOS16(0x48);

    almost certainly a NULL pointer from this macro

    These are the macro definitions.

    #define R128_BIOS8(v) ((info->VBIOS[(v)]))
    #define R128_BIOS16(v) ((info->VBIOS[(v)]) | \
    (info->VBIOS[(v) + 1] << 8))
    #define R128_BIOS32(v) ((info->VBIOS[(v)]) | \
    (info->VBIOS[(v) + 1] << 8) | \
    (info->VBIOS[(v) + 2] << 16) | \
    (info->VBIOS[(v) + 3] << 24))

    Please try these gdb commands once you hit the crash point:

    print info
    print info.VBIOS
    print info->VBIOS
    print info->VBIOS[0x48]
    print info->VBIOS[0x49]

    --
    bye,
    pabs

    https://wiki.debian.org/PaulWise

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEYQsotVz8/kXqG1Y7MRa6Xp/6aaMFAmQ/VYIACgkQMRa6Xp/6 aaOV0Q//dU03J96gabb7/WUAngvPeh4P3NC5FM+I/6CeYEQgRBsvq35MmkP6nJ+t 8qgQpQtSglNdvNnyWAMF0GMagzG31Rvwx8HyqTWeISY6uvoHMlv9DHBJr/sWtCNe xxVegeEM5Lk+YA9+//sPF8KWJL8p57Xqeu/8ZH/YjDSCxLRD+UFQoTGyIepuSUCR IHhSnRbldPTgizvrv6zTfD9NezEKGbc2HOufji+k2RZ1tYg7/jEiTt4fNizRGLiO a28tCdniDUc5QsYvjoi9NKE4eB+r9JSqFTq37d4SzhdlZwk61q/WsiyUQPpKz9KV xaAZU0Cj60cPtf8QgHmuKcvVXzjGY7NF+5EVIgtsEh/8LC00T9JmFxP55BckB3Pb beaeLZU7E39yEmTLipG7KRnfJJzslzMidM43LK55ujEy098KhrBZegZ6XTuACiou 3LDMPBrg9YYU7wqMbxZuM3nstTFMXTvtfZDgo/zUgbedr0mbIcFVo2mtXMpteifF N4ZyNhWR7nWzruUgkjetqHHnSjwPgoa0YSoux1vf08igbNZgczzbGAn5eUTsZIjd uuHHZgmY8WKQK1zXxLemannCQ5UJAtCAnZmtRWTg1gtDnTayzOD7S2u5RgyHM9dQ 7dq5DHgwepour4q5VVRbZ8bq0V5oc5u6ZzwxuEtQoHb+zIXoFqQ=
    =Nd+E
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)