On 03/05/2018 07:45 PM, Farhan Ali wrote: > > > On 03/05/2018 06:03 AM, Stefan Hajnoczi wrote: >> Please include the following gdb output: >> >> (gdb) disas swapcontext >> (gdb) i r >> >> That way it's possible to see which instruction faulted and which >> registers were being accessed. > > > here is the disas out for swapcontext, this is on a coredump with debugging > symbols enabled for qemu. So the addresses from the previous dump is a little > different. > > > (gdb) disas swapcontext > Dump of assembler code for function swapcontext: > 0x000003ff90751fb8 <+0>: lgr %r1,%r2 > 0x000003ff90751fbc <+4>: lgr %r0,%r3 > 0x000003ff90751fc0 <+8>: stfpc 248(%r1) > 0x000003ff90751fc4 <+12>: std %f0,256(%r1) > 0x000003ff90751fc8 <+16>: std %f1,264(%r1) > 0x000003ff90751fcc <+20>: std %f2,272(%r1) > 0x000003ff90751fd0 <+24>: std %f3,280(%r1) > 0x000003ff90751fd4 <+28>: std %f4,288(%r1) > 0x000003ff90751fd8 <+32>: std %f5,296(%r1) > 0x000003ff90751fdc <+36>: std %f6,304(%r1) > 0x000003ff90751fe0 <+40>: std %f7,312(%r1) > 0x000003ff90751fe4 <+44>: std %f8,320(%r1) > 0x000003ff90751fe8 <+48>: std %f9,328(%r1) > 0x000003ff90751fec <+52>: std %f10,336(%r1) > 0x000003ff90751ff0 <+56>: std %f11,344(%r1) > 0x000003ff90751ff4 <+60>: std %f12,352(%r1) > 0x000003ff90751ff8 <+64>: std %f13,360(%r1) > 0x000003ff90751ffc <+68>: std %f14,368(%r1) > 0x000003ff90752000 <+72>: std %f15,376(%r1) > 0x000003ff90752004 <+76>: slgr %r2,%r2 > 0x000003ff90752008 <+80>: stam %a0,%a15,184(%r1) > 0x000003ff9075200c <+84>: stmg %r0,%r15,56(%r1) > 0x000003ff90752012 <+90>: la %r2,2 > 0x000003ff90752016 <+94>: lgr %r5,%r0 > 0x000003ff9075201a <+98>: la %r3,384(%r5) > 0x000003ff9075201e <+102>: la %r4,384(%r1) > 0x000003ff90752022 <+106>: lghi %r5,8 > 0x000003ff90752026 <+110>: svc 175
sys_rt_sigprocmask. r0 should not be changed by the system call. > 0x000003ff90752028 <+112>: lgr %r5,%r0 > => 0x000003ff9075202c <+116>: lfpc 248(%r5) so r5 is zero and it was loaded from r0. r0 was loaded from r3 (which is the 2nd parameter to this function). Now this is odd. > 0x000003ff90752030 <+120>: ld %f0,256(%r5) > 0x000003ff90752034 <+124>: ld %f1,264(%r5) > 0x000003ff90752038 <+128>: ld %f2,272(%r5) > 0x000003ff9075203c <+132>: ld %f3,280(%r5) > 0x000003ff90752040 <+136>: ld %f4,288(%r5) > 0x000003ff90752044 <+140>: ld %f5,296(%r5) > 0x000003ff90752048 <+144>: ld %f6,304(%r5) > 0x000003ff9075204c <+148>: ld %f7,312(%r5) > 0x000003ff90752050 <+152>: ld %f8,320(%r5) > 0x000003ff90752054 <+156>: ld %f9,328(%r5) > 0x000003ff90752058 <+160>: ld %f10,336(%r5) > 0x000003ff9075205c <+164>: ld %f11,344(%r5) > 0x000003ff90752060 <+168>: ld %f12,352(%r5) > 0x000003ff90752064 <+172>: ld %f13,360(%r5) > 0x000003ff90752068 <+176>: ld %f14,368(%r5) > 0x000003ff9075206c <+180>: ld %f15,376(%r5) > 0x000003ff90752070 <+184>: lam %a2,%a15,192(%r5) > 0x000003ff90752074 <+188>: lmg %r0,%r15,56(%r5) > 0x000003ff9075207a <+194>: br %r14 > End of assembler dump. > > (gdb) i r > r0 0x0 0 > r1 0x3ff8fe7de40 4396165881408 > r2 0x0 0 > r3 0x3ff8fe7e1c0 4396165882304 > r4 0x3ff8fe7dfc0 4396165881792 > r5 0x0 0 > r6 0xffffffff88004880 18446744071696304256 > r7 0x3ff880009e0 4396033247712 > r8 0x27ff89000 10736930816 > r9 0x3ff88001460 4396033250400 > r10 0x1000 4096 > r11 0x1261be0 19274720 > r12 0x3ff88001e00 4396033252864 > r13 0x14d0bc0 21826496 > r14 0x1312ac8 19999432 > r15 0x3ff8fe7dc80 4396165880960 > pc 0x3ff9075202c 0x3ff9075202c <swapcontext+116> > cc 0x2 2