From: "Andres Freund" <and...@2ndquadrant.com>
It's x86, right? Then it's unlikely to be actual unordered memory
accesses, but if the compiler reordered:
LOG_LWDEBUG("LWLockRelease", T_NAME(l), T_ID(l), "release waiter");
proc = head;
head = proc->lwWaitLink;
proc->lwWaitLink = NULL;
proc->lwWaiting = false;
PGSemaphoreUnlock(&proc->sem);
to
LOG_LWDEBUG("LWLockRelease", T_NAME(l), T_ID(l), "release waiter");
proc = head;
proc->lwWaiting = false;
head = proc->lwWaitLink;
proc->lwWaitLink = NULL;
PGSemaphoreUnlock(&proc->sem);
which it is permitted to do, yes, that could cause symptoms like you
describe.
Yes, the hang occurred with 64-bit PostgreSQL 9.2.4 running on RHEL6 for
x86_64. The PostgreSQL was built with GCC.
Any chance you have the binaries the customer ran back then around?
Disassembling that piece of code might give you a hint whether that's a
possible cause.
I'm sorry I can't provide the module, but I attached the disassembled code
code for lwlockRelease and LWLockAcquire in the executable. I'm not sure
this proves something.
FYI, the following stack traces are the ones obtained during two instances
of hang.
#0 0x00000036102eaf77 in semop () from /lib64/libc.so.6
#1 0x0000000000614707 in PGSemaphoreLock ()
#2 0x0000000000659d5b in LWLockAcquire ()
#3 0x000000000047983d in RelationGetBufferForTuple ()
#4 0x0000000000477f86 in heap_insert ()
#5 0x00000000005a4a12 in ExecModifyTable ()
#6 0x000000000058d928 in ExecProcNode ()
#7 0x000000000058c762 in standard_ExecutorRun ()
#8 0x00007f0cb37f99cb in pgss_ExecutorRun () from
/opt/symfoserver64/lib/pg_stat_statements.so
#9 0x00007f0cb357f545 in explain_ExecutorRun () from
/opt/symfoserver64/lib/auto_explain.so
#10 0x000000000066a59e in ProcessQuery ()
#11 0x000000000066a7ef in PortalRunMulti ()
#12 0x000000000066afd2 in PortalRun ()
#13 0x0000000000666fcb in exec_simple_query ()
#14 0x0000000000668058 in PostgresMain ()
#15 0x0000000000622ef1 in PostmasterMain ()
#16 0x00000000005c0723 in main ()
#0 0x00000036102eaf77 in semop () from /lib64/libc.so.6
#1 0x0000000000614707 in PGSemaphoreLock ()
#2 0x0000000000659d5b in LWLockAcquire ()
#3 0x000000000047983d in RelationGetBufferForTuple ()
#4 0x0000000000477f86 in heap_insert ()
#5 0x00000000005a4a12 in ExecModifyTable ()
#6 0x000000000058d928 in ExecProcNode ()
#7 0x000000000058c762 in standard_ExecutorRun ()
#8 0x00007f0cb37f99cb in pgss_ExecutorRun () from
/opt/symfoserver64/lib/pg_stat_statements.so
#9 0x00007f0cb357f545 in explain_ExecutorRun () from
/opt/symfoserver64/lib/auto_explain.so
#10 0x000000000066a59e in ProcessQuery ()
#11 0x000000000066a7ef in PortalRunMulti ()
#12 0x000000000066afd2 in PortalRun ()
#13 0x0000000000666fcb in exec_simple_query ()
#14 0x0000000000668058 in PostgresMain ()
#15 0x0000000000622ef1 in PostmasterMain ()
#16 0x00000000005c0723 in main ()
#0 0x00000036102eaf77 in semop () from /lib64/libc.so.6
#1 0x0000000000614707 in PGSemaphoreLock ()
#2 0x0000000000659d5b in LWLockAcquire ()
#3 0x000000000064bb8c in ProcArrayEndTransaction ()
#4 0x0000000000491216 in CommitTransaction ()
#5 0x00000000004925a5 in CommitTransactionCommand ()
#6 0x0000000000664cf7 in finish_xact_command ()
#7 0x0000000000667145 in exec_simple_query ()
#8 0x0000000000668058 in PostgresMain ()
#9 0x0000000000622ef1 in PostmasterMain ()
#10 0x00000000005c0723 in main ()
Regards
MauMau
Dump of assembler code for function LWLockRelease:
0x0000000000647d40 <LWLockRelease+0>: push %r12
0x0000000000647d42 <LWLockRelease+2>: mov %edi,%r12d
0x0000000000647d45 <LWLockRelease+5>: shl $0x5,%r12
0x0000000000647d49 <LWLockRelease+9>: add 5192344(%rip),%r12 # 0xb3b7e8
<LWLockArray>
0x0000000000647d50 <LWLockRelease+16>: push %rbp
0x0000000000647d51 <LWLockRelease+17>: mov %edi,%ebp
0x0000000000647d53 <LWLockRelease+19>: push %rbx
0x0000000000647d54 <LWLockRelease+20>: mov 5192326(%rip),%ebx # 0xb3b7e0
<num_held_lwlocks>
0x0000000000647d5a <LWLockRelease+26>: nopw 0x0(%rax,%rax,1)
0x0000000000647d60 <LWLockRelease+32>: sub $0x1,%ebx
0x0000000000647d63 <LWLockRelease+35>: js 0x647ea4 <LWLockRelease+356>
0x0000000000647d69 <LWLockRelease+41>: movslq %ebx,%rax
0x0000000000647d6c <LWLockRelease+44>: cmp %ebp,0xb3b800(,%rax,4)
0x0000000000647d73 <LWLockRelease+51>: jne 0x647d60 <LWLockRelease+32>
0x0000000000647d75 <LWLockRelease+53>: mov 5192293(%rip),%esi # 0xb3b7e0
<num_held_lwlocks>
0x0000000000647d7b <LWLockRelease+59>: sub $0x1,%esi
0x0000000000647d7e <LWLockRelease+62>: cmp %ebx,%esi
0x0000000000647d80 <LWLockRelease+64>: mov %esi,5192282(%rip) # 0xb3b7e0
<num_held_lwlocks>
0x0000000000647d86 <LWLockRelease+70>: jg 0x647d92 <LWLockRelease+82>
0x0000000000647d88 <LWLockRelease+72>: jmp 0x647dad <LWLockRelease+109>
0x0000000000647d8a <LWLockRelease+74>: nopw 0x0(%rax,%rax,1)
0x0000000000647d90 <LWLockRelease+80>: mov %ecx,%ebx
0x0000000000647d92 <LWLockRelease+82>: lea 0x1(%rbx),%ecx
0x0000000000647d95 <LWLockRelease+85>: movslq %ebx,%rax
0x0000000000647d98 <LWLockRelease+88>: movslq %ecx,%rdx
0x0000000000647d9b <LWLockRelease+91>: cmp %ecx,%esi
0x0000000000647d9d <LWLockRelease+93>: mov 0xb3b800(,%rdx,4),%edx
0x0000000000647da4 <LWLockRelease+100>: mov %edx,0xb3b800(,%rax,4)
0x0000000000647dab <LWLockRelease+107>: jg 0x647d90 <LWLockRelease+80>
0x0000000000647dad <LWLockRelease+109>: mov $0x1,%eax
0x0000000000647db2 <LWLockRelease+114>: lock xchg %al,(%r12)
0x0000000000647db7 <LWLockRelease+119>: test %al,%al
0x0000000000647db9 <LWLockRelease+121>: jne 0x647ee4 <LWLockRelease+420>
0x0000000000647dbf <LWLockRelease+127>: movzbl 0x2(%r12),%eax
0x0000000000647dc5 <LWLockRelease+133>: test %al,%al
0x0000000000647dc7 <LWLockRelease+135>: jle 0x647f04 <LWLockRelease+452>
0x0000000000647dcd <LWLockRelease+141>: movzbl 0x2(%r12),%eax
0x0000000000647dd3 <LWLockRelease+147>: sub $0x1,%eax
0x0000000000647dd6 <LWLockRelease+150>: mov %al,0x2(%r12)
0x0000000000647ddb <LWLockRelease+155>: mov 0x8(%r12),%rcx
0x0000000000647de0 <LWLockRelease+160>: test %rcx,%rcx
0x0000000000647de3 <LWLockRelease+163>: je 0x647def <LWLockRelease+175>
0x0000000000647de5 <LWLockRelease+165>: movzbl 0x2(%r12),%eax
0x0000000000647deb <LWLockRelease+171>: test %al,%al
0x0000000000647ded <LWLockRelease+173>: je 0x647e08 <LWLockRelease+200>
0x0000000000647def <LWLockRelease+175>: movb $0x0,(%r12)
0x0000000000647df4 <LWLockRelease+180>: pop %rbx
0x0000000000647df5 <LWLockRelease+181>: pop %rbp
0x0000000000647df6 <LWLockRelease+182>: mov 5493340(%rip),%eax # 0xb85058
<InterruptHoldoffCount>
0x0000000000647dfc <LWLockRelease+188>: pop %r12
0x0000000000647dfe <LWLockRelease+190>: sub $0x1,%eax
0x0000000000647e01 <LWLockRelease+193>: mov %eax,5493329(%rip) # 0xb85058
<InterruptHoldoffCount>
0x0000000000647e07 <LWLockRelease+199>: retq
0x0000000000647e08 <LWLockRelease+200>: mov 0x4(%r12),%eax
0x0000000000647e0d <LWLockRelease+205>: test %eax,%eax
0x0000000000647e0f <LWLockRelease+207>: jne 0x647def <LWLockRelease+175>
0x0000000000647e11 <LWLockRelease+209>: movzbl 0x1(%r12),%eax
0x0000000000647e17 <LWLockRelease+215>: test %al,%al
0x0000000000647e19 <LWLockRelease+217>: je 0x647def <LWLockRelease+175>
0x0000000000647e1b <LWLockRelease+219>: cmpb $0x2,0x42(%rcx)
0x0000000000647e1f <LWLockRelease+223>: jne 0x647f66 <LWLockRelease+550>
0x0000000000647e25 <LWLockRelease+229>: mov 0x48(%rcx),%rax
0x0000000000647e29 <LWLockRelease+233>: test %rax,%rax
0x0000000000647e2c <LWLockRelease+236>: je 0x647f66 <LWLockRelease+550>
0x0000000000647e32 <LWLockRelease+242>: mov %rax,%rdx
0x0000000000647e35 <LWLockRelease+245>: jmp 0x647e44 <LWLockRelease+260>
0x0000000000647e37 <LWLockRelease+247>: mov 0x48(%rdx),%rdx
0x0000000000647e3b <LWLockRelease+251>: test %rdx,%rdx
0x0000000000647e3e <LWLockRelease+254>: je 0x647f16 <LWLockRelease+470>
0x0000000000647e44 <LWLockRelease+260>: movzbl 0x42(%rdx),%esi
0x0000000000647e48 <LWLockRelease+264>: mov %rdx,%rax
0x0000000000647e4b <LWLockRelease+267>: cmp $0x2,%sil
0x0000000000647e4f <LWLockRelease+271>: je 0x647e37 <LWLockRelease+247>
0x0000000000647e51 <LWLockRelease+273>: mov 0x48(%rdx),%rdx
0x0000000000647e55 <LWLockRelease+277>: test %sil,%sil
0x0000000000647e58 <LWLockRelease+280>: je 0x647f16 <LWLockRelease+470>
0x0000000000647e5e <LWLockRelease+286>: test %rdx,%rdx
0x0000000000647e61 <LWLockRelease+289>: je 0x647f16 <LWLockRelease+470>
0x0000000000647e67 <LWLockRelease+295>: cmpb $0x0,0x42(%rdx)
0x0000000000647e6b <LWLockRelease+299>: mov $0x1,%edi
0x0000000000647e70 <LWLockRelease+304>: jne 0x647e8a <LWLockRelease+330>
0x0000000000647e72 <LWLockRelease+306>: jmpq 0x647f16 <LWLockRelease+470>
0x0000000000647e77 <LWLockRelease+311>: cmpb $0x0,0x42(%rdx)
0x0000000000647e7b <LWLockRelease+315>: nopl 0x0(%rax,%rax,1)
0x0000000000647e80 <LWLockRelease+320>: je 0x647f1b <LWLockRelease+475>
0x0000000000647e86 <LWLockRelease+326>: movzbl 0x42(%rax),%esi
0x0000000000647e8a <LWLockRelease+330>: cmp $0x2,%sil
0x0000000000647e8e <LWLockRelease+334>: mov $0x0,%eax
0x0000000000647e93 <LWLockRelease+339>: cmovne %eax,%edi
0x0000000000647e96 <LWLockRelease+342>: mov %rdx,%rax
0x0000000000647e99 <LWLockRelease+345>: mov 0x48(%rdx),%rdx
0x0000000000647e9d <LWLockRelease+349>: test %rdx,%rdx
0x0000000000647ea0 <LWLockRelease+352>: jne 0x647e77 <LWLockRelease+311>
0x0000000000647ea2 <LWLockRelease+354>: jmp 0x647f1b <LWLockRelease+475>
0x0000000000647ea4 <LWLockRelease+356>: xor %r8d,%r8d
0x0000000000647ea7 <LWLockRelease+359>: mov $0x86fdb0,%ecx
0x0000000000647eac <LWLockRelease+364>: mov $0x2e5,%edx
0x0000000000647eb1 <LWLockRelease+369>: mov $0x86fd35,%esi
0x0000000000647eb6 <LWLockRelease+374>: mov $0x14,%edi
0x0000000000647ebb <LWLockRelease+379>: callq 0x71d240 <errstart>
0x0000000000647ec0 <LWLockRelease+384>: test %al,%al
0x0000000000647ec2 <LWLockRelease+386>: je 0x647d75 <LWLockRelease+53>
0x0000000000647ec8 <LWLockRelease+392>: mov %ebp,%esi
0x0000000000647eca <LWLockRelease+394>: mov $0x86fd3e,%edi
0x0000000000647ecf <LWLockRelease+399>: xor %eax,%eax
0x0000000000647ed1 <LWLockRelease+401>: callq 0x71ee30 <errmsg>
0x0000000000647ed6 <LWLockRelease+406>: mov %eax,%edi
0x0000000000647ed8 <LWLockRelease+408>: xor %eax,%eax
0x0000000000647eda <LWLockRelease+410>: callq 0x71cf60 <errfinish>
0x0000000000647edf <LWLockRelease+415>: jmpq 0x647d75 <LWLockRelease+53>
0x0000000000647ee4 <LWLockRelease+420>: mov $0x2eb,%edx
0x0000000000647ee9 <LWLockRelease+425>: mov $0x86fd35,%esi
0x0000000000647eee <LWLockRelease+430>: mov %r12,%rdi
0x0000000000647ef1 <LWLockRelease+433>: callq 0x648670 <s_lock>
0x0000000000647ef6 <LWLockRelease+438>: movzbl 0x2(%r12),%eax
0x0000000000647efc <LWLockRelease+444>: test %al,%al
0x0000000000647efe <LWLockRelease+446>: jg 0x647dcd <LWLockRelease+141>
0x0000000000647f04 <LWLockRelease+452>: mov 0x4(%r12),%eax
0x0000000000647f09 <LWLockRelease+457>: sub $0x1,%eax
0x0000000000647f0c <LWLockRelease+460>: mov %eax,0x4(%r12)
0x0000000000647f11 <LWLockRelease+465>: jmpq 0x647ddb <LWLockRelease+155>
0x0000000000647f16 <LWLockRelease+470>: mov $0x1,%edi
0x0000000000647f1b <LWLockRelease+475>: mov %rdx,0x8(%r12)
0x0000000000647f20 <LWLockRelease+480>: cmpb $0x2,0x42(%rax)
0x0000000000647f24 <LWLockRelease+484>: movq $0x0,0x48(%rax)
0x0000000000647f2c <LWLockRelease+492>: mov $0x0,%eax
0x0000000000647f31 <LWLockRelease+497>: cmovne %eax,%edi
0x0000000000647f34 <LWLockRelease+500>: mov %dil,0x1(%r12)
0x0000000000647f39 <LWLockRelease+505>: movb $0x0,(%r12)
0x0000000000647f3e <LWLockRelease+510>: jmp 0x647f43 <LWLockRelease+515>
0x0000000000647f40 <LWLockRelease+512>: mov %rbx,%rcx
0x0000000000647f43 <LWLockRelease+515>: mov 0x48(%rcx),%rbx
0x0000000000647f47 <LWLockRelease+519>: lea 0x10(%rcx),%rdi
0x0000000000647f4b <LWLockRelease+523>: movq $0x0,0x48(%rcx)
0x0000000000647f53 <LWLockRelease+531>: movb $0x0,0x41(%rcx)
0x0000000000647f57 <LWLockRelease+535>: callq 0x606210 <PGSemaphoreUnlock>
0x0000000000647f5c <LWLockRelease+540>: test %rbx,%rbx
0x0000000000647f5f <LWLockRelease+543>: jne 0x647f40 <LWLockRelease+512>
0x0000000000647f61 <LWLockRelease+545>: jmpq 0x647df4 <LWLockRelease+180>
0x0000000000647f66 <LWLockRelease+550>: movzbl 0x42(%rcx),%esi
0x0000000000647f6a <LWLockRelease+554>: mov 0x48(%rcx),%rdx
0x0000000000647f6e <LWLockRelease+558>: mov %rcx,%rax
0x0000000000647f71 <LWLockRelease+561>: jmpq 0x647e55 <LWLockRelease+277>
0x0000000000647f76 <LWLockRelease+566>: nopw %cs:0x0(%rax,%rax,1)
End of assembler dump.
Dump of assembler code for function LWLockAcquire:
0x0000000000647fc0 <LWLockAcquire+0>: push %r15
0x0000000000647fc2 <LWLockAcquire+2>: push %r14
0x0000000000647fc4 <LWLockAcquire+4>: push %r13
0x0000000000647fc6 <LWLockAcquire+6>: mov %esi,%r13d
0x0000000000647fc9 <LWLockAcquire+9>: push %r12
0x0000000000647fcb <LWLockAcquire+11>: push %rbp
0x0000000000647fcc <LWLockAcquire+12>: push %rbx
0x0000000000647fcd <LWLockAcquire+13>: mov %edi,%ebx
0x0000000000647fcf <LWLockAcquire+15>: shl $0x5,%rbx
0x0000000000647fd3 <LWLockAcquire+19>: sub $0x8,%rsp
0x0000000000647fd7 <LWLockAcquire+23>: add 5191690(%rip),%rbx # 0xb3b7e8
<LWLockArray>
0x0000000000647fde <LWLockAcquire+30>: cmpl $0x63,5191675(%rip) #
0xb3b7e0 <num_held_lwlocks>
0x0000000000647fe5 <LWLockAcquire+37>: mov %edi,0x4(%rsp)
0x0000000000647fe9 <LWLockAcquire+41>: mov 5191432(%rip),%rbp # 0xb3b6f8
<MyProc>
0x0000000000647ff0 <LWLockAcquire+48>: jg 0x648166 <LWLockAcquire+422>
0x0000000000647ff6 <LWLockAcquire+54>: mov 5492828(%rip),%eax # 0xb85058
<InterruptHoldoffCount>
0x0000000000647ffc <LWLockAcquire+60>: lea 0x10(%rbp),%r14
0x0000000000648000 <LWLockAcquire+64>: xor %r12d,%r12d
0x0000000000648003 <LWLockAcquire+67>: xor %r15d,%r15d
0x0000000000648006 <LWLockAcquire+70>: add $0x1,%eax
0x0000000000648009 <LWLockAcquire+73>: mov %eax,5492809(%rip) # 0xb85058
<InterruptHoldoffCount>
0x000000000064800f <LWLockAcquire+79>: jmp 0x648073 <LWLockAcquire+179>
0x0000000000648011 <LWLockAcquire+81>: movzbl 0x2(%rbx),%eax
0x0000000000648015 <LWLockAcquire+85>: test %al,%al
0x0000000000648017 <LWLockAcquire+87>: jne 0x648024 <LWLockAcquire+100>
0x0000000000648019 <LWLockAcquire+89>: mov 0x4(%rbx),%eax
0x000000000064801c <LWLockAcquire+92>: test %eax,%eax
0x000000000064801e <LWLockAcquire+94>: je 0x648157 <LWLockAcquire+407>
0x0000000000648024 <LWLockAcquire+100>: test %rbp,%rbp
0x0000000000648027 <LWLockAcquire+103>: je 0x648119 <LWLockAcquire+345>
0x000000000064802d <LWLockAcquire+109>: movb $0x1,0x41(%rbp)
0x0000000000648031 <LWLockAcquire+113>: mov %r13b,0x42(%rbp)
0x0000000000648035 <LWLockAcquire+117>: movq $0x0,0x48(%rbp)
0x000000000064803d <LWLockAcquire+125>: mov 0x8(%rbx),%rax
0x0000000000648041 <LWLockAcquire+129>: test %rax,%rax
0x0000000000648044 <LWLockAcquire+132>: je 0x648107 <LWLockAcquire+327>
0x000000000064804a <LWLockAcquire+138>: mov 0x10(%rbx),%rax
0x000000000064804e <LWLockAcquire+142>: mov %rbp,0x48(%rax)
0x0000000000648052 <LWLockAcquire+146>: mov %rbp,0x10(%rbx)
0x0000000000648056 <LWLockAcquire+150>: movb $0x0,(%rbx)
0x0000000000648059 <LWLockAcquire+153>: xor %esi,%esi
0x000000000064805b <LWLockAcquire+155>: mov %r14,%rdi
0x000000000064805e <LWLockAcquire+158>: callq 0x6062a0 <PGSemaphoreLock>
0x0000000000648063 <LWLockAcquire+163>: cmpb $0x0,0x41(%rbp)
0x0000000000648067 <LWLockAcquire+167>: jne 0x648110 <LWLockAcquire+336>
0x000000000064806d <LWLockAcquire+173>: mov $0x1,%r12d
0x0000000000648073 <LWLockAcquire+179>: mov $0x1,%eax
0x0000000000648078 <LWLockAcquire+184>: lock xchg %al,(%rbx)
0x000000000064807b <LWLockAcquire+187>: test %al,%al
0x000000000064807d <LWLockAcquire+189>: jne 0x6480f0 <LWLockAcquire+304>
0x000000000064807f <LWLockAcquire+191>: test %r12b,%r12b
0x0000000000648082 <LWLockAcquire+194>: je 0x648088 <LWLockAcquire+200>
0x0000000000648084 <LWLockAcquire+196>: movb $0x1,0x1(%rbx)
0x0000000000648088 <LWLockAcquire+200>: test %r13d,%r13d
0x000000000064808b <LWLockAcquire+203>: je 0x648011 <LWLockAcquire+81>
0x000000000064808d <LWLockAcquire+205>: movzbl 0x2(%rbx),%eax
0x0000000000648091 <LWLockAcquire+209>: test %al,%al
0x0000000000648093 <LWLockAcquire+211>: jne 0x648024 <LWLockAcquire+100>
0x0000000000648095 <LWLockAcquire+213>: mov 0x4(%rbx),%eax
0x0000000000648098 <LWLockAcquire+216>: add $0x1,%eax
0x000000000064809b <LWLockAcquire+219>: mov %eax,0x4(%rbx)
0x000000000064809e <LWLockAcquire+222>: movb $0x0,(%rbx)
0x00000000006480a1 <LWLockAcquire+225>: mov 5191481(%rip),%eax # 0xb3b7e0
<num_held_lwlocks>
0x00000000006480a7 <LWLockAcquire+231>: xor %ebx,%ebx
0x00000000006480a9 <LWLockAcquire+233>: mov 0x4(%rsp),%ecx
0x00000000006480ad <LWLockAcquire+237>: add $0x10,%rbp
0x00000000006480b1 <LWLockAcquire+241>: movslq %eax,%rdx
0x00000000006480b4 <LWLockAcquire+244>: add $0x1,%eax
0x00000000006480b7 <LWLockAcquire+247>: test %r15d,%r15d
0x00000000006480ba <LWLockAcquire+250>: mov %ecx,0xb3b800(,%rdx,4)
0x00000000006480c1 <LWLockAcquire+257>: mov %eax,5191449(%rip) # 0xb3b7e0
<num_held_lwlocks>
0x00000000006480c7 <LWLockAcquire+263>: jle 0x6480e0 <LWLockAcquire+288>
0x00000000006480c9 <LWLockAcquire+265>: nopl 0x0(%rax)
0x00000000006480d0 <LWLockAcquire+272>: mov %rbp,%rdi
0x00000000006480d3 <LWLockAcquire+275>: add $0x1,%ebx
0x00000000006480d6 <LWLockAcquire+278>: callq 0x606210 <PGSemaphoreUnlock>
0x00000000006480db <LWLockAcquire+283>: cmp %r15d,%ebx
0x00000000006480de <LWLockAcquire+286>: jne 0x6480d0 <LWLockAcquire+272>
0x00000000006480e0 <LWLockAcquire+288>: add $0x8,%rsp
0x00000000006480e4 <LWLockAcquire+292>: pop %rbx
0x00000000006480e5 <LWLockAcquire+293>: pop %rbp
0x00000000006480e6 <LWLockAcquire+294>: pop %r12
0x00000000006480e8 <LWLockAcquire+296>: pop %r13
0x00000000006480ea <LWLockAcquire+298>: pop %r14
0x00000000006480ec <LWLockAcquire+300>: pop %r15
0x00000000006480ee <LWLockAcquire+302>: retq
0x00000000006480ef <LWLockAcquire+303>: nop
0x00000000006480f0 <LWLockAcquire+304>: mov $0x18e,%edx
0x00000000006480f5 <LWLockAcquire+309>: mov $0x86fd35,%esi
0x00000000006480fa <LWLockAcquire+314>: mov %rbx,%rdi
0x00000000006480fd <LWLockAcquire+317>: callq 0x648670 <s_lock>
0x0000000000648102 <LWLockAcquire+322>: jmpq 0x64807f <LWLockAcquire+191>
0x0000000000648107 <LWLockAcquire+327>: mov %rbp,0x8(%rbx)
0x000000000064810b <LWLockAcquire+331>: jmpq 0x648052 <LWLockAcquire+146>
0x0000000000648110 <LWLockAcquire+336>: add $0x1,%r15d
0x0000000000648114 <LWLockAcquire+340>: jmpq 0x648059 <LWLockAcquire+153>
0x0000000000648119 <LWLockAcquire+345>: xor %r8d,%r8d
0x000000000064811c <LWLockAcquire+348>: mov $0x86fdf9,%ecx
0x0000000000648121 <LWLockAcquire+353>: mov $0x1b5,%edx
0x0000000000648126 <LWLockAcquire+358>: mov $0x86fd35,%esi
0x000000000064812b <LWLockAcquire+363>: mov $0x16,%edi
0x0000000000648130 <LWLockAcquire+368>: callq 0x71d240 <errstart>
0x0000000000648135 <LWLockAcquire+373>: test %al,%al
0x0000000000648137 <LWLockAcquire+375>: je 0x64802d <LWLockAcquire+109>
0x000000000064813d <LWLockAcquire+381>: mov $0x86fd88,%edi
0x0000000000648142 <LWLockAcquire+386>: xor %eax,%eax
0x0000000000648144 <LWLockAcquire+388>: callq 0x71ee30 <errmsg>
0x0000000000648149 <LWLockAcquire+393>: mov %eax,%edi
0x000000000064814b <LWLockAcquire+395>: xor %eax,%eax
0x000000000064814d <LWLockAcquire+397>: callq 0x71cf60 <errfinish>
0x0000000000648152 <LWLockAcquire+402>: jmpq 0x64802d <LWLockAcquire+109>
0x0000000000648157 <LWLockAcquire+407>: movzbl 0x2(%rbx),%eax
0x000000000064815b <LWLockAcquire+411>: add $0x1,%eax
0x000000000064815e <LWLockAcquire+414>: mov %al,0x2(%rbx)
0x0000000000648161 <LWLockAcquire+417>: jmpq 0x64809e <LWLockAcquire+222>
0x0000000000648166 <LWLockAcquire+422>: xor %r8d,%r8d
0x0000000000648169 <LWLockAcquire+425>: mov $0x86fdf9,%ecx
0x000000000064816e <LWLockAcquire+430>: mov $0x170,%edx
0x0000000000648173 <LWLockAcquire+435>: mov $0x86fd35,%esi
0x0000000000648178 <LWLockAcquire+440>: mov $0x14,%edi
0x000000000064817d <LWLockAcquire+445>: callq 0x71d240 <errstart>
0x0000000000648182 <LWLockAcquire+450>: test %al,%al
0x0000000000648184 <LWLockAcquire+452>: je 0x647ff6 <LWLockAcquire+54>
0x000000000064818a <LWLockAcquire+458>: mov $0x86fd52,%edi
0x000000000064818f <LWLockAcquire+463>: xor %eax,%eax
0x0000000000648191 <LWLockAcquire+465>: callq 0x71ee30 <errmsg>
0x0000000000648196 <LWLockAcquire+470>: mov %eax,%edi
0x0000000000648198 <LWLockAcquire+472>: xor %eax,%eax
0x000000000064819a <LWLockAcquire+474>: callq 0x71cf60 <errfinish>
0x000000000064819f <LWLockAcquire+479>: jmpq 0x647ff6 <LWLockAcquire+54>
0x00000000006481a4 <LWLockAcquire+484>: nopw 0x0(%rax,%rax,1)
0x00000000006481aa <LWLockAcquire+490>: nopw 0x0(%rax,%rax,1)
End of assembler dump.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers