Linux ps command core randomly

152 views Asked by At

I am observing segmentation fault randomly when doing a ps of a particular process id. THe process to which the pid is pointing was up and running during the time ps {pid} was executed

Backtrace :

(gdb) bt
#0  reset_global () at ps/global.c:362
#1  0x0000000000402456 in main (argc=2, argv=0x7ffe02d33fa8) at ps/display.c:578 (gdb)

at ps/global.c:362 there is a call to look_up_our_self(&p);

359         void reset_global(void){
360           static proc_t p;
361           reset_selection_list();
362           look_up_our_self(&p);
363           set_screen_size();
364           set_personality();
365           int fd;
366           char *buf[BUFFSIZE];

disassemble out put.

gdb) disassemble

0x000000000040315a <+74>:       callq  0x401930 <free@plt>
   0x000000000040315f <+79>:    test   %rbp,%rbp
   0x0000000000403162 <+82>:    jne    0x403148 <reset_global+56>
   0x0000000000403164 <+84>:    lea    0x10(%rsp),%rbx
   0x0000000000403169 <+89>:    mov    $0x635860,%edi
   0x000000000040316e <+94>:    movq   $0x0,0x21253f(%rip)        # 0x6156b8 <selection_list>
=> 0x0000000000403179 <+105>:   callq  0x401a60 <look_up_our_self@plt>
   0x000000000040317e <+110>:   xor    %eax,%eax
   0x0000000000403180 <+112>:   mov    %rbx,%rdx
   0x0000000000403183 <+115>:   mov    $0x5413,%esi
   0x0000000000403188 <+120>:   mov    $0x1,%edi
   0x000000000040318d <+125>:   callq  0x4017f0 <ioctl@plt>
   0x0000000000403192 <+130>:   cmp    $0xffffffffffffffff,%eax

Registers

(gdb) info registers
rax            0xdeadbeef       3735928559
rbx            0x7ffe02cb3d50   140728945294672
rcx            0x0      0
rdx            0x0      0
rsi            0x7ffe02d33ce0   140728945818848
rdi            0x635860 6510688
rbp            0x7ffe02d33df0   0x7ffe02d33df0
rsp            0x7ffe02cb3d40   0x7ffe02cb3d40
r8             0x0      0
r9             0x1      1
r10            0x8      8
r11            0x206    518
r12            0x2      2
r13            0x7ffe02d33fa8   140728945819560
r14            0x0      0
r15            0x0      0
rip            0x403179 0x403179 <reset_global+105>
eflags         0x10246  [ PF ZF IF RF ]
cs             0x33     51
ss             0x2b     43
ds             0x0      0
es             0x0      0
fs             0x0      0
gs             0x0      0
(gdb) 

update: maps output:

00400000-00416000 r-xp 00000000 00:11 6116
/bin/ps 00615000-00616000 rw-p 00015000 00:11 6116
/bin/ps 00616000-00636000 rw-p 00000000 00:00 0 7ffe0258d000-7ffe026e1000 r-xp 00000000 00:11 8166
/lib64/libc-2.11.1.so 7ffe026e1000-7ffe028e1000 ---p 00154000 00:11 8166 /lib64/libc-2.11.1.so 7ffe028e1000-7ffe028e5000 r--p 00154000 00:11 8166
/lib64/libc-2.11.1.so 7ffe028e5000-7ffe028e6000 rw-p 00158000 00:11 8166 /lib64/libc-2.11.1.so 7ffe028e6000-7ffe028eb000 rw-p 00000000 00:00 0 7ffe028eb000-7ffe028ed000 r-xp 00000000 00:11 8175
/lib64/libdl-2.11.1.so 7ffe028ed000-7ffe02aed000 ---p 00002000 00:11 8175 /lib64/libdl-2.11.1.so 7ffe02aed000-7ffe02aee000 r--p 00002000 00:11 8175
/lib64/libdl-2.11.1.so 7ffe02aee000-7ffe02aef000 rw-p 00003000 00:11 8175 /lib64/libdl-2.11.1.so 7ffe02aef000-7ffe02afe000 r-xp 00000000 00:11 8213
/lib64/libproc-3.2.8.so 7ffe02afe000-7ffe02cfe000 ---p 0000f000 00:11 8213 /lib64/libproc-3.2.8.so 7ffe02cfe000-7ffe02cff000 rw-p 0000f000 00:11 8213
/lib64/libproc-3.2.8.so 7ffe02cff000-7ffe02d13000 rw-p 00000000 00:00 0 7ffe02d14000-7ffe02d35000 rw-p 00000000 00:00 0
[stack] 7ffe02d7f000-7ffe02d80000 r-xp 00000000 00:00 0
[vdso] 7ffe02eaa000-7ffe02ec8000 r-xp 00000000 00:11 8156
/lib64/ld-2.11.1.so 7ffe030b9000-7ffe030bc000 rw-p 00000000 00:00 0 7ffe030c6000-7ffe030c7000 rw-p 00000000 00:00 0 7ffe030c7000-7ffe030c8000 r--p 0001d000 00:11 8156
/lib64/ld-2.11.1.so 7ffe030c8000-7ffe030c9000 rw-p 0001e000 00:11 8156 /lib64/ld-2.11.1.so 7ffe030c9000-7ffe030ca000 rw-p 00000000 00:00 0 ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
[vsyscall]
1

There are 1 answers

0
Karthik K Sridhar On

Please find the proc/map file contents below for the above segmentation fault: On behalf of Guruswamy Basavaiah

    00400000-00416000 r-xp 00000000 00:11 6116                               /bin/ps
    00615000-00616000 rw-p 00015000 00:11 6116                               /bin/ps
    00616000-00636000 rw-p 00000000 00:00 0
    7ffe0258d000-7ffe026e1000 r-xp 00000000 00:11 8166                       /lib64/libc-2.11.1.so
    7ffe026e1000-7ffe028e1000 ---p 00154000 00:11 8166                       /lib64/libc-2.11.1.so
    7ffe028e1000-7ffe028e5000 r--p 00154000 00:11 8166                       /lib64/libc-2.11.1.so
    7ffe028e5000-7ffe028e6000 rw-p 00158000 00:11 8166                       /lib64/libc-2.11.1.so
    7ffe028e6000-7ffe028eb000 rw-p 00000000 00:00 0
    7ffe028eb000-7ffe028ed000 r-xp 00000000 00:11 8175                       /lib64/libdl-2.11.1.so
    7ffe028ed000-7ffe02aed000 ---p 00002000 00:11 8175                       /lib64/libdl-2.11.1.so
    7ffe02aed000-7ffe02aee000 r--p 00002000 00:11 8175                       /lib64/libdl-2.11.1.so
    7ffe02aee000-7ffe02aef000 rw-p 00003000 00:11 8175                       /lib64/libdl-2.11.1.so
    7ffe02aef000-7ffe02afe000 r-xp 00000000 00:11 8213                       /lib64/libproc-3.2.8.so
    7ffe02afe000-7ffe02cfe000 ---p 0000f000 00:11 8213                       /lib64/libproc-3.2.8.so
    7ffe02cfe000-7ffe02cff000 rw-p 0000f000 00:11 8213                       /lib64/libproc-3.2.8.so
    7ffe02cff000-7ffe02d13000 rw-p 00000000 00:00 0
    7ffe02d14000-7ffe02d35000 rw-p 00000000 00:00 0                          [stack]
    7ffe02d7f000-7ffe02d80000 r-xp 00000000 00:00 0                          [vdso]
    7ffe02eaa000-7ffe02ec8000 r-xp 00000000 00:11 8156                       /lib64/ld-2.11.1.so
    7ffe030b9000-7ffe030bc000 rw-p 00000000 00:00 0
    7ffe030c6000-7ffe030c7000 rw-p 00000000 00:00 0
    7ffe030c7000-7ffe030c8000 r--p 0001d000 00:11 8156                       /lib64/ld-2.11.1.so
    7ffe030c8000-7ffe030c9000 rw-p 0001e000 00:11 8156                       /lib64/ld-2.11.1.so
    7ffe030c9000-7ffe030ca000 rw-p 00000000 00:00 0
    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]