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

Reply via email to