[Zope-dev] TCP CLOSE_WAIT leaks

Dieter Maurer dieter at handshake.de
Mon Apr 3 13:35:05 EDT 2006


Alan Milligan wrote at 2006-4-3 12:05 +1000:
> ...
>#36 0xa86a19b0 in ?? ()
>#37 0xa86a19ac in ?? ()
>#38 0xb7a07583 in ?? () from
>/opt/zope2.8/lib/python/Acquisition/_Acquisition.so
>#39 0xb7a83660 in ?? ()
>#40 0x00000000 in ?? ()
>
>
>I must confess that I'm quite puzzled that the main thread is also
>blocked - DeadlockDebugger's publish magic is not being invoked,
>concurring with strace.

Looks as if your Python were compiled without debugging symbols.
You will get much better tracebacks (easier to understand),
when you rebuild your Python with debugging symbols.

The following GDB macros can be used to help in the analysis.
"pfr" can be called in frames "eval_frame" to learn
about the Python frame.

def ps
x/s ({PyStringObject}$arg0)->ob_sval
end

def pfr
ps f->f_code->co_filename
ps f->f_code->co_name
#p f->f_lineno
lineno
end

define lineno
    set $__co = f->f_code
    set $__lasti = f->f_lasti
    set $__sz = ((PyStringObject *)$__co->co_lnotab)->ob_size/2
    set $__p = (unsigned char *)((PyStringObject *)$__co->co_lnotab)->ob_sval
    set $__li = $__co->co_firstlineno
    set $__ad = 0
    while ($__sz-1 >= 0)
      set $__sz = $__sz - 1
      set $__ad = $__ad + *$__p
      set $__p = $__p + 1
      if ($__ad > $__lasti)
	# break -- interpreted as "breakpoint"
	set $__sz = -1
      end
      if ($__sz >= 0)
        set $__li = $__li + *$__p
        set $__p = $__p + 1
      end
    end
    printf "%d\n", $__li
end

-- 
Dieter


More information about the Zope-Dev mailing list