Hi,
I just spent some time hunting done a segfault that was cropping up recently
for me, and I have narrowed it down to some python threading that the
clang_complete plugin is doing. I have attached a minimal vimrc that is needed
to make the bug appear, the two stripped-down plugin files (just put them into
~/.vim/plugin), a gdb backtrace log and my version information (it's the newest
one with all patches applied).
The segfault happens in the vim.eval(getline()) call in libclang.py. The
comment above refers to a short sleep being necessary for vim to initialize
itself, and indeed it seems to be timing related: the bug only appears with
larger cpp files, and if I increase the sleep time the bug disappears. Here is
a pretty large cpp file to test it with:
https://hg.mozilla.org/mozilla-central/raw-file/4b24c5ab84cb/js/src/jstracer.cpp
Unfortunately I don't really know enough about the vim internals to fix it
myself, but maybe it's actually not as complicated as it looks.
Cheers,
Jan
--
-[ OpenPGP key ID: 00A0FD5F ]-
People disagreeing everywhere you look, makes you wanna stop and read a
book.
-- Bob Dylan
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
syntax enable
set foldmethod=syntax
au FileType c,cpp,objc,objcpp call <SID>InitClangCompletePython()
let s:plugin_path = escape(expand('<sfile>:p:h'), '\')
function! s:InitClangCompletePython()
exe 'pyfile ' . s:plugin_path . '/libclang.py'
python WarmupCache()
endfunction
import vim
import time
import threading
class CompleteThread(threading.Thread):
lock = threading.Lock()
def __init__(self):
threading.Thread.__init__(self)
def run(self):
try:
CompleteThread.lock.acquire()
# Warm up the caches. For this it is sufficient to get the current
# translation unit. No need to retrieve completion results.
# This short pause is necessary to allow vim to initialize itself.
# Otherwise we would get: E293: block was not locked
# The user does not see any delay, as we just pause a background thread.
time.sleep(0.1)
file = "\n".join(vim.eval("getline(1, '$')"))
except Exception:
pass
CompleteThread.lock.release()
def WarmupCache():
t = CompleteThread()
t.start()
return
#0 0x0813089a in vim_strsave (string=0x5b960c1b <Address 0x5b960c1b out of
bounds>) at misc2.c:1248
p = 0x83c9f58 " * Tomi Leppikangas <[email protected]>"
len = 3079624484
#1 0x0809e885 in list_append_string (l=0x83e7a28, str=0x5b960c1b <Address
0x5b960c1b out of bounds>,
len=-1) at eval.c:6341
li = 0x83c9f90
#2 0x080a42a5 in get_buffer_lines (buf=0x8299c30, start=29, end=6873,
retlist=1, rettv=0x8403c28)
at eval.c:10854
p = 0x1ad9 <Address 0x1ad9 out of bounds>
#3 0x080a4cbd in f_getline (argvars=0xb78f55b8, rettv=0x8403c28) at
eval.c:11365
lnum = 1
end = 6873
retlist = 1
#4 0x080a0cad in call_func (funcname=0xb7917e94 "getline(1, '$')", len=7,
rettv=0x8403c28, argcount=2,
argvars=0xb78f55b8, firstline=1, lastline=1, doesrange=0xb78f5724,
evaluate=1, selfdict=0x0)
at eval.c:8386
ret = 0
error = 0
i = 88
llen = 0
fp = 0x69
fname_buf =
"\000\000\000\000\000\000\001\000\000\fW\217\267xU\217\267\342\264\t\b\264V\217\267\304U\217\267\001\000\000\000\000\000\000\000\000\000\000"
fname = 0x8430f40 "getline"
name = 0x8430f40 "getline"
#5 0x080a07e8 in get_func_tv (name=0xb7917e94 "getline(1, '$')", len=7,
rettv=0x8403c28, arg=
0xb78f5a48, firstline=1, lastline=1, doesrange=0xb78f5724, evaluate=1,
selfdict=0x0) at eval.c:8199
argp = 0xb7917ea3 ""
ret = 1
argvars = {[0] = {
v_type = 1 '\001',
v_lock = 0 '\000',
vval = {
v_number = 1,
v_float = 4.9406564584124654e-324,
v_string = 0x1 <Address 0x1 out of bounds>,
v_list = 0x1,
v_dict = 0x1
}
},
[1] = {
v_type = 2 '\002',
v_lock = 0 '\000',
vval = {
v_number = 138427368,
v_float = 6.8392206973023905e-316,
v_string = 0x8403be8 "$",
v_list = 0x8403be8,
v_dict = 0x8403be8
}
},
[2] = {
v_type = 0 '\000',
v_lock = 0 '\000',
vval = {
v_number = 0,
v_float = 0,
v_string = 0x0,
v_list = 0x0,
v_dict = 0x0
}
},
[3] = {
v_type = 0 '\000',
v_lock = 0 '\000',
vval = {
v_number = 0,
v_float = 0,
v_string = 0x0,
v_list = 0x0,
v_dict = 0x0
}
},
[4] = {
v_type = 0 '\000',
v_lock = 0 '\000',
vval = {
v_number = 0,
v_float = 4.2529570768294997e-269,
v_string = 0x0,
v_list = 0x0,
v_dict = 0x0
}
},
[5] = {
v_type = 4 '\004',
v_lock = 0 '\000',
vval = {
v_number = 0,
v_float = 0,
v_string = 0x0,
v_list = 0x0,
v_dict = 0x0
}
},
[6] = {
v_type = -101 '\233',
v_lock = 126 '~',
vval = {
v_number = -445254428,
v_float = -4.496576056022351e-41,
v_string = 0xe575f4e4 <Address 0xe575f4e4 out of bounds>,
v_list = 0xe575f4e4,
v_dict = 0xe575f4e4
}
},
[7] = {
v_type = 110 'n',
v_lock = 61 '=',
vval = {
v_number = 137787296,
v_float = -5.020659859621984e-41,
v_string = 0x83677a0 "\017",
v_list = 0x83677a0,
v_dict = 0x83677a0
}
},
[8] = {
v_type = -28 '\344',
v_lock = -12 '\364',
vval = {
v_number = 0,
v_float = 0,
v_string = 0x0,
v_list = 0x0,
v_dict = 0x0
}
},
[9] = {
v_type = 0 '\000',
v_lock = 0 '\000',
vval = {
v_number = -1215343016,
v_float = 6.3873254592715862e-270,
v_string = 0xb78f5658
"\210V\217\267\325\375\n\b\240w6\b\224~\221\267",
v_list = 0xb78f5658,
v_dict = 0xb78f5658
}
},
[10] = {
v_type = -96 '\240',
v_lock = 119 'w',
vval = {
v_number = -1215201644,
v_float = -4.496645728434629e-41,
v_string = 0xb7917e94 "getline(1, '$')",
v_list = 0xb7917e94,
v_dict = 0xb7917e94
}
},
[11] = {
v_type = -25 '\347',
v_lock = -17 '\357',
vval = {
v_number = 0,
v_float = -5.020690372540882e-41,
v_string = 0x0,
v_list = 0x0,
v_dict = 0x0
}
},
[12] = {
v_type = 120 'x',
v_lock = 86 'V',
vval = {
v_number = 137787352,
v_float = -5.0206905130259482e-41,
v_string = 0x83677d8 "",
v_list = 0x83677d8,
v_dict = 0x83677d8
}
},
[13] = {
v_type = 0 '\000',
v_lock = 0 '\000',
vval = {
v_number = -1215342968,
v_float = 6.3864806283037218e-270,
v_string = 0xb78f5688 "\310V\217\267g\006\n\b\224~\221\267",
v_list = 0xb78f5688,
v_dict = 0xb78f5688
}
},
[14] = {
v_type = -96 '\240',
v_lock = 119 'w',
vval = {
v_number = -1215201644,
v_float = 1.5216064058950678e-314,
v_string = 0xb7917e94 "getline(1, '$')",
v_list = 0xb7917e94,
v_dict = 0xb7917e94
}
},
[15] = {
v_type = -101 '\233',
v_lock = 126 '~',
vval = {
v_number = -1215096768,
v_float = 1.521658221523741e-314,
v_string =
0xb7931840
"X\rJ\266\310\302\221\267l\236\367\267A|\353\345\260Ƒ\267\020њ\267",
v_list = 0xb7931840,
v_dict = 0xb7931840
}
},
[16] = {
v_type = -108 '\224',
v_lock = 126 '~',
vval = {
v_number = 137787296,
v_float = -4.4988863061881338e-41,
v_string = 0x83677a0 "\017",
v_list = 0x83677a0,
v_dict = 0x83677a0
}
},
[17] = {
v_type = -80 '\260',
v_lock = 86 'V',
vval = {
v_number = -1215342904,
v_float = 6.1577913839917156e-270,
v_string = 0xb78f56c8 "XW\217\267*\315\t\b\224~\221\267\a",
v_list = 0xb78f56c8,
v_dict = 0xb78f56c8
}
},
[18] = {
v_type = -108 '\224',
v_lock = 126 '~',
vval = {
v_number = 0,
v_float = -3.5651173228947894e-47,
v_string = 0x0,
v_list = 0x0,
v_dict = 0x0
}
},
[19] = {
v_type = -66 '\276',
v_lock = 71 'G',
vval = {
v_number = -1215096796,
v_float = -5.0971212067674375e-41,
v_string = 0xb7931824 "\001",
v_list = 0xb7931824,
v_dict = 0xb7931824
}
},
[20] = {
v_type = 88 'X',
v_lock = 13 '\r',
vval = {
v_number = 0,
v_float = 0,
v_string = 0x0,
v_list = 0x0,
v_dict = 0x0
}
}}
argcount = 2
#6 0x0809cd2a in eval7 (arg=0xb78f5a48, rettv=0x8403c28, evaluate=1,
want_string=0) at eval.c:5134
n = 0
len = 0
s = 0xb7917e94 "getline(1, '$')"
start_leader = 0xb7917e94 "getline(1, '$')"
end_leader = 0xb7917e94 "getline(1, '$')"
ret = 2
alias = 0x0
#7 0x0809c64a in eval6 (arg=0xb78f5a48, rettv=0x8403c28, evaluate=1,
want_string=0) at eval.c:4786
var2 = {
v_type = -52 '\314',
v_lock = 14 '\016',
vval = {
v_number = -1208511956,
v_float = -6.9980876777226396e-41,
v_string = 0xb7f7922c "PM&",
v_list = 0xb7f7922c,
v_dict = 0xb7f7922c
}
}
op = 127
n1 = -1210055019
n2 = -1208511956
use_float = 0
f1 = 0
f2 = 9.9461758994834062e+75
error = 0
#8 0x0809c2d1 in eval5 (arg=0xb78f5a48, rettv=0x8403c28, evaluate=1) at
eval.c:4602
var2 = {
v_type = -128 '\200',
v_lock = 39 '\'',
vval = {
v_number = -1215342004,
v_float = 1.5215370588410175e-314,
v_string = 0xb78f5a4c
"\033-\342\267\370;@\b,p\005\b\210Z\217\267Vt\t\b\224~\221\267(<@\b",
v_list = 0xb78f5a4c,
v_dict = 0xb78f5a4c
}
}
var3 = {
v_type = 76 'L',
v_lock = 90 'Z',
vval = {
v_number = 0,
v_float = -5.2386667277243083e-41,
v_string = 0x0,
v_list = 0x0,
v_dict = 0x0
}
}
op = -1215342068
n1 = -1210046738
n2 = -1215151860
f1 = 0
f2 = 0
s1 = 0x100 <Address 0x100 out of bounds>
s2 = 0xb78f588c ""
buf1 =
"\217\267\335\063\266O\200b\230\267,\222\367\267,\222\367\267\377\377\377\377,˗\267,\222",
<incomplete sequence \367\267>
buf2 =
"\364')\b\031\000\000\000܇ط\300\263\304O\200~\221\267\300\263\304Ohu>\b\254X"
p = 0xb78f598c ""
#9 0x0809b95e in eval4 (arg=0xb78f5a48, rettv=0x8403c28, evaluate=1) at
eval.c:4295
var2 = {
v_type = -120 '\210',
v_lock = -110 '\222',
vval = {
v_number = 1336859128,
v_float = -4.4983088818457235e-41,
v_string = 0x4faed9f8 "symbol=%s; lookup in file=%s [%lu]\n",
v_list = 0x4faed9f8,
v_dict = 0x4faed9f8
}
}
p = 0x2c92cc5c <Address 0x2c92cc5c out of bounds>
i = -1210975512
type = TYPE_UNKNOWN
type_is = 0
len = 2
n1 = 419
n2 = -1211053596
s1 = 0xb7d1acb8 "\332\004"
s2 = 0x1c <Address 0x1c out of bounds>
buf1 =
"\255Ot\235\257O\354\311з\305\343\200\033\021\000\000\000\070\000\000\000\000\000\000\000\000\000\000"
buf2 = '\000' <repeats 12 times>"\364,
\017\257O\374~ѷ\020\000\000\000tY\217\267\245", <incomplete sequence \341>
regmatch = {
regprog = 0x4faf9d74,
startp = {[0] = 0xd696910 <Address 0xd696910 out of
bounds>,
[1] = 0x0,
[2] = 0x4faddb73 "\266",
[3] = 0x1 <Address 0x1 out of bounds>,
[4] = 0x0,
[5] = 0x2 <Address 0x2 out of bounds>,
[6] = 0x823da19 "s",
[7] = 0xb792410c "\001",
[8] = 0xb7e9fe24 "too many tuple nesting levels in argument format
string",
[9] = 0x823da1a ""},
endp = {[0] = 0xb7d26680 "libc.so.6",
[1] = 0xb7d1acb8 "\332\004",
[2] = 0xb78f5940 "",
[3] = 0xb78f58f4
"tY\217\267\245\341\255Ot\235\257O\354\311з\305\343\200\033\021",
[4] =
0x4faddb54
"\205\300\017\204x\377\377\377\061\366\353͋A\b\205\300u\365\205\377u\361f\203",
<incomplete sequence \344>,
[5] = 0xb7d1ffc2 "PyEval_SaveThread",
[6] = 0x8063e73 "PyEval_SaveThread",
[7] = 0xb7e02780 "\017\266T$<\017\266ʋ",
[8] = 0x5 <Address 0x5 out of bounds>,
[9] = 0x843f224 ""},
rm_ic = 0
}
ic = 5
save_cpo = 0xb7d13000 ""
#10 0x0809b7ef in eval3 (arg=0xb78f5a48, rettv=0x8403c28, evaluate=1) at
eval.c:4207
var2 = {
v_type = 0 '\000',
v_lock = 0 '\000',
vval = {
v_number = 0,
v_float = 1.0609978954826362e-313,
v_string = 0x0,
v_list = 0x0,
v_dict = 0x0
}
}
result = 1
first = 0
error = 0
#11 0x0809b691 in eval2 (arg=0xb78f5a48, rettv=0x8403c28, evaluate=1) at
eval.c:4136
var2 = {
v_type = 36 '$',
v_lock = 90 'Z',
vval = {
v_number = 1338291136,
v_float = 7.0329634236112164e+75,
v_string = 0x4fc4b3c0 "",
v_list = 0x4fc4b3c0,
v_dict = 0x4fc4b3c0
}
}
result = 1338286068
first = 0
error = 0
#12 0x0809b4e2 in eval1 (arg=0xb78f5a48, rettv=0x8403c28, evaluate=1) at
eval.c:4061
result = -1208113064
var2 = {
v_type = 12 '\f',
v_lock = 0 '\000',
vval = {
v_number = -1214678880,
v_float = -8.1158212628771245e-40,
v_string = 0xb79978a0 "\006",
v_list = 0xb79978a0,
v_dict = 0xb79978a0
}
}
#13 0x0809b44e in eval0 (arg=0xb7917e94 "getline(1, '$')", rettv=0x8403c28,
nextcmd=0x0, evaluate=1)
at eval.c:4018
ret = -1209914085
p = 0xb7917e9b "(1, '$')"
#14 0x08097456 in eval_expr (arg=0xb7917e94 "getline(1, '$')", nextcmd=0x0) at
eval.c:1544
tv = 0x8403c28
#15 0x08202754 in VimEval (self=0x0, args=("getline(1, '$')",)) at
if_py_both.h:412
_save = 0x8404708
expr = 0xb7917e94 "getline(1, '$')"
our_tv = 0x0
result = <type at remote 0x843cb6c>
lookup_dict = 0x0
#16 0xb7d8840e in PyCFunction_Call (func=<built-in function eval>,
arg=("getline(1, '$')",), kw=0x0)
at ../Objects/methodobject.c:116
f = 0xb791878c
meth = 0x8202706 <VimEval at if_py_both.h:400>
self = <optimized out>
size = <optimized out>
#17 0xb7dedae7 in call_function (oparg=<optimized out>, pp_stack=0xb78f5bc4) at
../Python/ceval.c:4021
callargs = ("getline(1, '$')",)
flags = 1
tstate = <optimized out>
func = <built-in function eval>
w = <optimized out>
na = 138430216
nk = <optimized out>
n = -1215151860
pfunc = 0x8422198
x = <optimized out>
#18 PyEval_EvalFrameEx (f=
Frame 0x8422054, for file /home/jan/.vim/plugin/libclang.py, line 20, in
run (self=<CompleteThread(_Thread__ident=-1215337616,
_Thread__block=<_Condition(_Verbose__verbose=False,
_Condition__lock=<thread.lock at remote 0xb79ad120>, acquire=<built-in method
acquire of thread.lock object at remote 0xb79ad120>, _Condition__waiters=[],
release=<built-in method release of thread.lock object at remote 0xb79ad120>)
at remote 0xb7920fcc>, _Thread__name='Thread-1', _Thread__daemonic=False,
_Thread__started=<_Event(_Verbose__verbose=False, _Event__flag=True,
_Event__cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock
at remote 0xb79ad110>, acquire=<built-in method acquire of thread.lock object
at remote 0xb79ad110>, _Condition__waiters=[], release=<built-in method release
of thread.lock object at remote 0xb79ad110>) at remote 0xb7920e8c>) at remote
0xb7918dac>, _Thread__stderr=<message at remote 0x8285984>,
_Thread__target=None, _Thread__kwargs={}, _Verbose__verbose=False,
_Thread__args=(), _Thread_...(truncated),
throwflag=0) at ../Python/ceval.c:2666
sp = 0x842219c
stack_pointer = <optimized out>
next_instr = 0xb7906223 "\203\001"
opcode = <optimized out>
oparg = <optimized out>
why = WHY_NOT
err = 0
x =
(<unknown at remote 0x5>, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, <unknown at remote 0x1>, <unknown at remote 0x1>, 0x0, <unknown
at remote 0xb78f6b70>, <unknown at remote 0x449>, <unknown at remote 0x1>,
<type at remote 0xb7f8b340>, <unknown at remote 0x42c>, <unknown at remote
0xffffffff>, 0x0, <unknown at remote 0x61745320>, <unknown at remote
0x7261646e>, <unknown at remote 0x65222064>, <unknown at remote 0x646f636e>,
<unknown at remote 0x73676e69>, <unknown at remote 0x61502022>, <unknown at
remote 0x67616b63>, <unknown at remote 0x200a0a65>, <unknown at remote
0x53202020>, <unknown at remote 0x646e6174>, <unknown at remote 0x20647261>,
<unknown at remote 0x68747950>, <unknown at remote 0x65206e6f>, <unknown at
remote 0x646f636e>, <unknown at remote 0x20676e69>, <unknown at remote
0x75646f6d>, <unknown at remote 0x2073656c>, <unknown at remote 0x20657261>,
<unknown at remote 0x726f7473>, <unknown at remote 0x69206465>, <unknown at
remote 0x6874206e>, <unknown at remote 0x70207369...(truncated)
v = <optimized out>
w = <optimized out>
u = <optimized out>
t = <optimized out>
stream = 0x0
fastlocals = 0x842218c
freevars = 0x8422194
retval = 0x0
tstate = 0x8404708
co = 0xb7975c38
instr_ub = -1
instr_lb = 0
instr_prev = -1
first_instr = 0xb79061f4 "y6"
names =
('CompleteThread', 'lock', 'acquire', 'time', 'sleep', 'join', 'vim',
'eval', 'Exception', 'release')
consts = (None, <float at remote 0x83b0ecc>, '\n', "getline(1, '$')")
#19 0xb7dee9ed in fast_function (nk=<optimized out>, na=138622516, n=1,
pp_stack=0xb78f5cb4, func=
<function at remote 0xb7915a04>) at ../Python/ceval.c:4107
retval = 0x0
i = <optimized out>
fastlocals = 0x842218c
f =
Frame 0x8422054, for file /home/jan/.vim/plugin/libclang.py, line 20, in
run (self=<CompleteThread(_Thread__ident=-1215337616,
_Thread__block=<_Condition(_Verbose__verbose=False,
_Condition__lock=<thread.lock at remote 0xb79ad120>, acquire=<built-in method
acquire of thread.lock object at remote 0xb79ad120>, _Condition__waiters=[],
release=<built-in method release of thread.lock object at remote 0xb79ad120>)
at remote 0xb7920fcc>, _Thread__name='Thread-1', _Thread__daemonic=False,
_Thread__started=<_Event(_Verbose__verbose=False, _Event__flag=True,
_Event__cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock
at remote 0xb79ad110>, acquire=<built-in method acquire of thread.lock object
at remote 0xb79ad110>, _Condition__waiters=[], release=<built-in method release
of thread.lock object at remote 0xb79ad110>) at remote 0xb7920e8c>) at remote
0xb7918dac>, _Thread__stderr=<message at remote 0x8285984>,
_Thread__target=None, _Thread__kwargs={}, _Verbose__verbose=False,
_Thread__args=(), _Thread_...(truncated)
tstate = <optimized out>
stack = <optimized out>
co = <optimized out>
nd = 0
globals =
(<unknown at remote 0x5>, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, <unknown at remote 0x1>, <unknown at remote 0x1>, 0x0, <unknown
at remote 0xb78f6b70>, <unknown at remote 0x449>, <unknown at remote 0x1>,
<type at remote 0xb7f8b340>, <unknown at remote 0x42c>, <unknown at remote
0xffffffff>, 0x0, <unknown at remote 0x61745320>, <unknown at remote
0x7261646e>, <unknown at remote 0x65222064>, <unknown at remote 0x646f636e>,
<unknown at remote 0x73676e69>, <unknown at remote 0x61502022>, <unknown at
remote 0x67616b63>, <unknown at remote 0x200a0a65>, <unknown at remote
0x53202020>, <unknown at remote 0x646e6174>, <unknown at remote 0x20647261>,
<unknown at remote 0x68747950>, <unknown at remote 0x65206e6f>, <unknown at
remote 0x646f636e>, <unknown at remote 0x20676e69>, <unknown at remote
0x75646f6d>, <unknown at remote 0x2073656c>, <unknown at remote 0x20657261>,
<unknown at remote 0x726f7473>, <unknown at remote 0x69206465>, <unknown at
remote 0x6874206e>, <unknown at remote 0x70207369...(truncated)
argdefs = <optimized out>
d = 0x0
#20 call_function (oparg=<optimized out>, pp_stack=0xb78f5cb4) at
../Python/ceval.c:4042
func = <function at remote 0xb7915a04>
w = <optimized out>
na = 138622516
nk = <optimized out>
n = 1
pfunc = 0x8433634
x = <optimized out>
#21 PyEval_EvalFrameEx (f=
Frame 0x84334ec, for file /usr/lib/python2.7/threading.py, line 552, in
__bootstrap_inner (self=<CompleteThread(_Thread__ident=-1215337616,
_Thread__block=<_Condition(_Verbose__verbose=False,
_Condition__lock=<thread.lock at remote 0xb79ad120>, acquire=<built-in method
acquire of thread.lock object at remote 0xb79ad120>, _Condition__waiters=[],
release=<built-in method release of thread.lock object at remote 0xb79ad120>)
at remote 0xb7920fcc>, _Thread__name='Thread-1', _Thread__daemonic=False,
_Thread__started=<_Event(_Verbose__verbose=False, _Event__flag=True,
_Event__cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock
at remote 0xb79ad110>, acquire=<built-in method acquire of thread.lock object
at remote 0xb79ad110>, _Condition__waiters=[], release=<built-in method release
of thread.lock object at remote 0xb79ad110>) at remote 0xb7920e8c>) at remote
0xb7918dac>, _Thread__stderr=<message at remote 0x8285984>,
_Thread__target=None, _Thread__kwargs={}, _Verbose__verbose=False,
_Thread__args...(truncated),
throwflag=0) at ../Python/ceval.c:2666
sp = 0x8433638
stack_pointer = <optimized out>
next_instr = 0x8433bb2 "\001Wn\a\001\004t\016"
opcode = <optimized out>
oparg = <optimized out>
why = WHY_NOT
err = 0
x = <unknown at remote 0x8433634>
v = <optimized out>
w = <optimized out>
u = <optimized out>
t = <optimized out>
stream = 0x0
fastlocals = 0x8433624
freevars = 0x8433634
retval = 0x0
tstate = 0x8404708
co = 0xb791e890
instr_ub = -1
instr_lb = 0
instr_prev = -1
first_instr = 0x8433b0c "z\322\001|"
names =
('_set_ident', '_Thread__started', 'set', '_active_limbo_lock', '_active',
'_Thread__ident', '_limbo', '_note', '_trace_hook', '_sys', 'settrace',
'_profile_hook', 'setprofile', 'run', 'SystemExit', 'stderr', 'write', 'name',
'_format_exc', '_Thread__exc_info', '_Thread__stderr', 'tb_frame', 'f_code',
'co_filename', 'tb_lineno', 'co_name', 'tb_next', '_Thread__exc_clear',
'_Thread__stop', '_get_ident')
consts =
(None, '%s.__bootstrap(): thread started', '%s.__bootstrap(): registering
trace hook', '%s.__bootstrap(): registering profile hook', '%s.__bootstrap():
raised SystemExit', '%s.__bootstrap(): unhandled exception', 'Exception in
thread %s:\n%s\n', 'Exception in thread ', ' (most likely raised during
interpreter shutdown):', 'Traceback (most recent call last):', ' File "%s",
line %s, in %s', '%s: %s', '%s.__bootstrap(): normal return')
#22 0xb7dee9ed in fast_function (nk=<optimized out>, na=138622152, n=1,
pp_stack=0xb78f5da4, func=
<function at remote 0xb792fd4c>) at ../Python/ceval.c:4107
retval = 0x0
i = <optimized out>
fastlocals = 0x8433624
f =
Frame 0x84334ec, for file /usr/lib/python2.7/threading.py, line 552, in
__bootstrap_inner (self=<CompleteThread(_Thread__ident=-1215337616,
_Thread__block=<_Condition(_Verbose__verbose=False,
_Condition__lock=<thread.lock at remote 0xb79ad120>, acquire=<built-in method
acquire of thread.lock object at remote 0xb79ad120>, _Condition__waiters=[],
release=<built-in method release of thread.lock object at remote 0xb79ad120>)
at remote 0xb7920fcc>, _Thread__name='Thread-1', _Thread__daemonic=False,
_Thread__started=<_Event(_Verbose__verbose=False, _Event__flag=True,
_Event__cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock
at remote 0xb79ad110>, acquire=<built-in method acquire of thread.lock object
at remote 0xb79ad110>, _Condition__waiters=[], release=<built-in method release
of thread.lock object at remote 0xb79ad110>) at remote 0xb7920e8c>) at remote
0xb7918dac>, _Thread__stderr=<message at remote 0x8285984>,
_Thread__target=None, _Thread__kwargs={}, _Verbose__verbose=False,
_Thread__args...(truncated)
tstate = <optimized out>
stack = <optimized out>
co = <optimized out>
nd = 0
globals =
(<unknown at remote 0x5>, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, <unknown at remote 0x1>, <unknown at remote 0x1>, 0x0, <unknown
at remote 0xb78f6b70>, <unknown at remote 0x449>, <unknown at remote 0x1>,
<type at remote 0xb7f8b340>, <unknown at remote 0x42c>, <unknown at remote
0xffffffff>, 0x0, <unknown at remote 0x61745320>, <unknown at remote
0x7261646e>, <unknown at remote 0x65222064>, <unknown at remote 0x646f636e>,
<unknown at remote 0x73676e69>, <unknown at remote 0x61502022>, <unknown at
remote 0x67616b63>, <unknown at remote 0x200a0a65>, <unknown at remote
0x53202020>, <unknown at remote 0x646e6174>, <unknown at remote 0x20647261>,
<unknown at remote 0x68747950>, <unknown at remote 0x65206e6f>, <unknown at
remote 0x646f636e>, <unknown at remote 0x20676e69>, <unknown at remote
0x75646f6d>, <unknown at remote 0x2073656c>, <unknown at remote 0x20657261>,
<unknown at remote 0x726f7473>, <unknown at remote 0x69206465>, <unknown at
remote 0x6874206e>, <unknown at remote 0x70207369...(truncated)
argdefs = <optimized out>
d = 0x0
#23 call_function (oparg=<optimized out>, pp_stack=0xb78f5da4) at
../Python/ceval.c:4042
func = <function at remote 0xb792fd4c>
w = <optimized out>
na = 138622152
nk = <optimized out>
n = 1
pfunc = 0x84334c8
x = <optimized out>
#24 PyEval_EvalFrameEx (f=
Frame 0x843338c, for file /usr/lib/python2.7/threading.py, line 525, in
__bootstrap (self=<CompleteThread(_Thread__ident=-1215337616,
_Thread__block=<_Condition(_Verbose__verbose=False,
_Condition__lock=<thread.lock at remote 0xb79ad120>, acquire=<built-in method
acquire of thread.lock object at remote 0xb79ad120>, _Condition__waiters=[],
release=<built-in method release of thread.lock object at remote 0xb79ad120>)
at remote 0xb7920fcc>, _Thread__name='Thread-1', _Thread__daemonic=False,
_Thread__started=<_Event(_Verbose__verbose=False, _Event__flag=True,
_Event__cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock
at remote 0xb79ad110>, acquire=<built-in method acquire of thread.lock object
at remote 0xb79ad110>, _Condition__waiters=[], release=<built-in method release
of thread.lock object at remote 0xb79ad110>) at remote 0xb7920e8c>) at remote
0xb7918dac>, _Thread__stderr=<message at remote 0x8285984>,
_Thread__target=None, _Thread__kwargs={}, _Verbose__verbose=False,
_Thread__args=(), _...(truncated),
throwflag=0) at ../Python/ceval.c:2666
sp = 0x84334cc
stack_pointer = <optimized out>
next_instr = 0xb796bd60 "\001Wn#"
opcode = <optimized out>
oparg = <optimized out>
why = WHY_NOT
err = 0
x = <unknown at remote 0x84334c8>
v = <optimized out>
w = <optimized out>
u = <optimized out>
t = <optimized out>
stream = 0x0
fastlocals = 0x84334c4
freevars = 0x84334c8
retval = 0x0
tstate = 0x8404708
co = 0xb791e7b8
instr_ub = -1
instr_lb = 0
instr_prev = -1
first_instr = 0xb796bd54 "y\016"
names = ('_Thread__bootstrap_inner', '_Thread__daemonic', '_sys',
'None')
consts = (None,)
#25 0xb7defb54 in PyEval_EvalCodeEx (co=0xb791e7b8, globals=
{'current_thread': <function at remote 0xb7930224>, '_BoundedSemaphore':
<type at remote 0x843c994>, 'currentThread': <function at remote 0xb7930224>,
'_Timer': <type at remote 0x843d304>, '_format_exc': <function at remote
0xb796a4c4>, 'Semaphore': <function at remote 0xb792f534>, 'activeCount':
<function at remote 0xb7930304>, '_profile_hook': None, '_sleep': <built-in
function sleep>, '_trace_hook': None, 'ThreadError': <type at remote
0x842c59c>, '_enumerate': <function at remote 0xb793033c>, '_start_new_thread':
<built-in function start_new_thread>, 'BoundedSemaphore': <function at remote
0xb792f79c>, '_shutdown': <instancemethod at remote 0xb7944e3c>, '__all__':
['activeCount', 'active_count', 'Condition', 'currentThread', 'current_thread',
'enumerate', 'Event', 'Lock', 'RLock', 'Semaphore', 'BoundedSemaphore',
'Thread', 'Timer', 'setprofile', 'settrace', 'local', 'stack_size'], '_Event':
<type at remote 0x843ce4c>, 'active_count': <function at remote 0xb7930304>,
'__package__': None, '_Condition': <typ...(truncated),
locals=0x0, args=0xb791b4f8, argcount=1, kws=0x0, kwcount=0, defs=0x0,
defcount=0, closure=0x0)
at ../Python/ceval.c:3253
f =
Frame 0x843338c, for file /usr/lib/python2.7/threading.py, line 525, in
__bootstrap (self=<CompleteThread(_Thread__ident=-1215337616,
_Thread__block=<_Condition(_Verbose__verbose=False,
_Condition__lock=<thread.lock at remote 0xb79ad120>, acquire=<built-in method
acquire of thread.lock object at remote 0xb79ad120>, _Condition__waiters=[],
release=<built-in method release of thread.lock object at remote 0xb79ad120>)
at remote 0xb7920fcc>, _Thread__name='Thread-1', _Thread__daemonic=False,
_Thread__started=<_Event(_Verbose__verbose=False, _Event__flag=True,
_Event__cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock
at remote 0xb79ad110>, acquire=<built-in method acquire of thread.lock object
at remote 0xb79ad110>, _Condition__waiters=[], release=<built-in method release
of thread.lock object at remote 0xb79ad110>) at remote 0xb7920e8c>) at remote
0xb7918dac>, _Thread__stderr=<message at remote 0x8285984>,
_Thread__target=None, _Thread__kwargs={}, _Verbose__verbose=False,
_Thread__args=(), _...(truncated)
retval = 0x0
fastlocals = 0x84334c4
freevars = 0x84334c8
tstate = 0x8404708
x = <optimized out>
u = <optimized out>
#26 0xb7d7143c in function_call (func=<function at remote 0xb792fcdc>, arg=
(<CompleteThread(_Thread__ident=-1215337616,
_Thread__block=<_Condition(_Verbose__verbose=False,
_Condition__lock=<thread.lock at remote 0xb79ad120>, acquire=<built-in method
acquire of thread.lock object at remote 0xb79ad120>, _Condition__waiters=[],
release=<built-in method release of thread.lock object at remote 0xb79ad120>)
at remote 0xb7920fcc>, _Thread__name='Thread-1', _Thread__daemonic=False,
_Thread__started=<_Event(_Verbose__verbose=False, _Event__flag=True,
_Event__cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock
at remote 0xb79ad110>, acquire=<built-in method acquire of thread.lock object
at remote 0xb79ad110>, _Condition__waiters=[], release=<built-in method release
of thread.lock object at remote 0xb79ad110>) at remote 0xb7920e8c>) at remote
0xb7918dac>, _Thread__stderr=<message at remote 0x8285984>,
_Thread__target=None, _Thread__kwargs={}, _Verbose__verbose=False,
_Thread__args=(), _Thread__stopped=False, _Thread__initialized=True) at remote
0xb7918bec>,), kw=0x0)
at ../Objects/funcobject.c:526
result = <optimized out>
argdefs = <optimized out>
kwtuple = 0x0
d = 0x0
k = 0x0
nk = 0
nd = 0
#27 0xb7d46fd4 in PyObject_Call (func=<function at remote 0xb792fcdc>, arg=
(<CompleteThread(_Thread__ident=-1215337616,
_Thread__block=<_Condition(_Verbose__verbose=False,
_Condition__lock=<thread.lock at remote 0xb79ad120>, acquire=<built-in method
acquire of thread.lock object at remote 0xb79ad120>, _Condition__waiters=[],
release=<built-in method release of thread.lock object at remote 0xb79ad120>)
at remote 0xb7920fcc>, _Thread__name='Thread-1', _Thread__daemonic=False,
_Thread__started=<_Event(_Verbose__verbose=False, _Event__flag=True,
_Event__cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock
at remote 0xb79ad110>, acquire=<built-in method acquire of thread.lock object
at remote 0xb79ad110>, _Condition__waiters=[], release=<built-in method release
of thread.lock object at remote 0xb79ad110>) at remote 0xb7920e8c>) at remote
0xb7918dac>, _Thread__stderr=<message at remote 0x8285984>,
_Thread__target=None, _Thread__kwargs={}, _Verbose__verbose=False,
_Thread__args=(), _Thread__stopped=False, _Thread__initialized=True) at remote
0xb7918bec>,), kw=0x0)
at ../Objects/abstract.c:2529
result = <optimized out>
call = 0xb7d71390 <function_call at ../Objects/funcobject.c:489>
#28 0xb7d5454c in instancemethod_call (func=<function at remote 0xb792fcdc>,
arg=<optimized out>, kw=
0x0) at ../Objects/classobject.c:2578
self = <optimized out>
klass = <optimized out>
result = <optimized out>
#29 0xb7d46fd4 in PyObject_Call (func=<instancemethod at remote 0xb7958c34>,
arg=(), kw=0x0)
at ../Objects/abstract.c:2529
result = <optimized out>
call = 0xb7d544b0 <instancemethod_call at ../Objects/classobject.c:2526>
#30 0xb7de83eb in PyEval_CallObjectWithKeywords (func=<instancemethod at remote
0xb7958c34>, arg=(), kw=
0x0) at ../Python/ceval.c:3890
result = <optimized out>
#31 0xb7e274b0 in t_bootstrap (boot_raw=0x843c2b0) at
../Modules/threadmodule.c:614
boot = 0x843c2b0
tstate = 0x8404708
res = <optimized out>
#32 0x4fc83c39 in start_thread (arg=0xb78f6b70) at pthread_create.c:304
__res = <optimized out>
__ignore1 = <optimized out>
__ignore2 = <optimized out>
pd = 0xb78f6b70
now = <optimized out>
unwind_buf = {
cancel_jmp_buf = {[0] = {
jmp_buf = {[0] = 1338589172,
[1] = 0,
[2] = 4001536,
[3] = -1215339800,
[4] = 1845859011,
[5] = -524713677},
mask_was_saved = 0
}},
priv = {
pad = {[0] = 0x0,
[1] = 0x0,
[2] = 0x0,
[3] = 0x0},
data = {
prev = 0x0,
cleanup = 0x0,
canceltype = 0
}
}
}
not_first_call = <optimized out>
freesize = <optimized out>
__PRETTY_FUNCTION__ = "start_thread"
#33 0x4fbc096e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130
No locals.
Backtrace stopped: Not enough registers or memory available to unwind further
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov 18 2011 14:28:14)
Included patches: 1-353
Compiled by Jan Larres <[email protected]>
Huge version with GTK2 GUI. Features included (+) or not (-):
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent
+clientserver +clipboard
+cmdline_compl +cmdline_hist +cmdline_info +comments +conceal +cryptv +cscope
+cursorbind +cursorshape
+dialog_con_gui +diff +digraphs +dnd -ebcdic +emacs_tags +eval +ex_extra
+extra_search +farsi
+file_in_path +find_in_path +float +folding -footer +fork() +gettext
-hangul_input +iconv +insert_expand
+jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap
-lua +menu +mksession
+modify_fname +mouse +mouseshape +mouse_dec -mouse_gpm -mouse_jsbterm
+mouse_netterm -mouse_sysmouse
+mouse_xterm +mouse_urxvt +multi_byte +multi_lang -mzscheme +netbeans_intg
+path_extra +perl
+persistent_undo +postscript +printer +profile +python -python3 +quickfix
+reltime +rightleft +ruby
+scrollbind +signs +smartindent -sniff +startuptime +statusline -sun_workshop
+syntax +tag_binary
+tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title
+toolbar +user_commands
+vertsplit +virtualedit +visual +visualextra +viminfo +vreplace +wildignore
+wildmenu +windows
+writebackup +X11 -xfontset +xim +xsmp_interact +xterm_clipboard -xterm_save
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
user exrc file: "$HOME/.exrc"
system gvimrc file: "$VIM/gvimrc"
user gvimrc file: "$HOME/.gvimrc"
system menu file: "$VIMRUNTIME/menu.vim"
fall-back for $VIM: "/home/jan/src/vim/installed/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK -pthread
-I/usr/include/gtk-2.0 -I/usr/lib/i386-linux-gnu/gtk-2.0/include
-I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0
-I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12
-I/usr/include/cairo -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include -I/usr/local/include -g -DDEBUG -Wall -Wshadow
-Wmissing-prototypes -D_FORTIFY_SOURCE=1
Linking: gcc -L. -rdynamic -Wl,-export-dynamic -Wl,-E -L/usr/local/lib
-Wl,--as-needed -o vim -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0
-lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0
-lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt
-lglib-2.0 -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE -lm -ltinfo -lnsl
-ldl -Wl,-E -fstack-protector -L/usr/local/lib -L/usr/lib/perl/5.12/CORE
-lperl -ldl -lm -lpthread -lcrypt -L/usr/lib/python2.7/config -lpython2.7
-lpthread -ldl -lutil -lm -Xlinker -export-dynamic -Wl,-O1
-Wl,-Bsymbolic-functions -lruby1.8 -lpthread -lrt -ldl -lcrypt -lm
-L/usr/lib
DEBUG BUILD