Skip to contentSkip to conversation

More strange problems

parisc-linux Richard Allen 3 participants 5 messages Sep 27, 2001

lore
Share & tools
lore
#0 lore raw
bofh:/u0/RPMS# rpm --initdb
bofh:/u0/RPMS# rpm -ivh zlib-1.1.3-24.parisc.rpm zlib-devel-1.1.3-24.parisc.rpm
Segmentation fault
bofh:/u0/RPMS# dmesg | tail -20

do_page_fault() pid=2132 command='rpm' type=15 address=0x00000024

YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI
PSW: 00000000000001001111111100001111

r0-3     00000000 00000008 0007c7b7 bff00938
r4-7     001b8000 00000009 00207510 0020758c
r8-11    00002001 00205fe0 bff007f4 001ffa10
r12-15   001de270 00000000 bff004c4 00000102
r16-19   00000000 001f65e0 00205fe0 001b8000
r20-23   01010101 00205fdc 80808080 00000006
r24-27   bff00938 00000009 00000000 001dca70
r28-31   001e3238 00000000 bff009f0 00059457
sr0-3    00000014 00000014 00000000 00000014
sr4-7    00000014 00000014 00000014 00000014

IASQ: 00000014 00000014 IAOQ: 0007c7c3 0007c7c7
IIR: 48340038 ISR: 00000014 IOR: 00000024
CPU: 0 CR30: 29164000 CR31: 10350000
ORIG_R28: 00206000

Another question.

While creating a diff from the glibc 2.2.3 sources in your CVS against prestine glibc 2.2.3 sources, I notice that there is a subfolder in
there called linuxthreads. Are threads handled differently on
parisc than on other platforms ? Or is this folder just something
left over from older times ?

Signature · 4 lines
Rikki.         --  HP Technical Support, RHCE, RHCX, HP-UX Certified Admin.
               --  Solaris 7 Certified Systems and Network Administrator.
Bell Labs Unix --  Reach out and grep someone.
Those who do not understand Unix are condemned to reinvent it, poorly.
#1 lore raw
Quoted 5 lines · Richard Allen

While creating a diff from the glibc 2.2.3 sources in your CVS against prestine glibc 2.2.3 sources, I notice that there is a subfolder in
there called linuxthreads. Are threads handled differently on
parisc than on other platforms ? Or is this folder just something
left over from older times ?

linuxthreads is distributed as an add-on package for glibc; see the glibc documentation.

Signature · 1 line
Revolutions do not require corporate support.
#2 lore raw
Quoted 9 lines · Matthew Wilcox
Quoted 5 lines · Richard Allen

While creating a diff from the glibc 2.2.3 sources in your CVS against prestine glibc 2.2.3 sources, I notice that there is a subfolder in
there called linuxthreads. Are threads handled differently on
parisc than on other platforms ? Or is this folder just something
left over from older times ?

linuxthreads is distributed as an add-on package for glibc; see the glibc documentation.

Ah :) Thanks :)

Is there any way for a non kernel guru like myself to get any info out of those errors in dmesg ?

do_page_fault() pid=2132 command='rpm' type=15 address=0x00000024

YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI
PSW: 00000000000001001111111100001111

r0-3     00000000 00000008 0007c7b7 bff00938
r4-7     001b8000 00000009 00207510 0020758c
r8-11    00002001 00205fe0 bff007f4 001ffa10
r12-15   001de270 00000000 bff004c4 00000102
r16-19   00000000 001f65e0 00205fe0 001b8000
r20-23   01010101 00205fdc 80808080 00000006
r24-27   bff00938 00000009 00000000 001dca70
r28-31   001e3238 00000000 bff009f0 00059457
sr0-3    00000014 00000014 00000000 00000014
sr4-7    00000014 00000014 00000014 00000014

IASQ: 00000014 00000014 IAOQ: 0007c7c3 0007c7c7
IIR: 48340038 ISR: 00000014 IOR: 00000024
CPU: 0 CR30: 29164000 CR31: 10350000
ORIG_R28: 00206000

For example, is this a problem with the command Im running (RPM) or is it a problem in the kernel ?

Signature · 4 lines
Rikki.         --  HP Technical Support, RHCE, RHCX, HP-UX Certified Admin.
               --  Solaris 7 Certified Systems and Network Administrator.
Bell Labs Unix --  Reach out and grep someone.
Those who do not understand Unix are condemned to reinvent it, poorly.
#3 lore raw
Quoted 2 lines · Richard Allen

Is there any way for a non kernel guru like myself to get any info out of those errors in dmesg ?

Sure..

Quoted 1 line

do_page_fault() pid=2132 command='rpm' type=15 address=0x00000024

`address=0x00000024' -- it's a NULL pointer dereference.

Quoted 13 lines

YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI
PSW: 00000000000001001111111100001111

r0-3     00000000 00000008 0007c7b7 bff00938
r4-7     001b8000 00000009 00207510 0020758c
r8-11    00002001 00205fe0 bff007f4 001ffa10
r12-15   001de270 00000000 bff004c4 00000102
r16-19   00000000 001f65e0 00205fe0 001b8000
r20-23   01010101 00205fdc 80808080 00000006
r24-27   bff00938 00000009 00000000 001dca70
r28-31   001e3238 00000000 bff009f0 00059457
sr0-3    00000014 00000014 00000000 00000014
sr4-7    00000014 00000014 00000014 00000014
Quoted 1 line

IASQ: 00000014 00000014 IAOQ: 0007c7c3 0007c7c7

IASQ: 00000014' -- 0 means kernel, anything else is a user process. IAOQ: 0007c7c3' -- bottom 2 bits set, so we're in user mode too (good!).

Quoted 3 lines

IIR: 48340038 ISR: 00000014 IOR: 00000024
CPU: 0 CR30: 29164000 CR31: 10350000
ORIG_R28: 00206000

The truly dedicated will decode IIR to see what instruction it was, cross-check which register in the dump was wrong then try to debug the program.

Signature · 1 line
Revolutions do not require corporate support.
#4 lore raw
Quoted 9 lines
Quoted 5 lines

r0-3 00000000 00000008 0007c7b7 bff00938
...
IIR: 48340038 ISR: 00000014 IOR: 00000024
CPU: 0 CR30: 29164000 CR31: 10350000
ORIG_R28: 00206000

The truly dedicated will decode IIR to see what instruction it was, cross-check which register in the dump was wrong then try to debug the program.

Decoding IIR is actually pretty easy if you have an HP-UX system with adb:

$ echo "0x48340038=i" | adb
                LDW             28(r1),r20

adb prints the offset in decimal, so this is 0x1c(0x8) = 0x24, which matches the IOR. I wish I knew how to do the same with gdb.