Closed GoogleCodeExporter closed 9 years ago
Sorry, but I can't reproduce your issue at debian x64 w/ python 2.5 and v8
v2.0.5.5, could
you reproduce it every time and in release mode ?
flier@vm-debian-x64:~/pyv8/build/lib.linux-x86_64-2.5$ uname -a
Linux vm-debian-x64 2.6.26-2-amd64 #1 SMP Thu Nov 5 02:23:12 UTC 2009 x86_64
GNU/Linux
flier@vm-debian-x64:~/pyv8/build/lib.linux-x86_64-2.5$ python2.5 PyV8.py -v
2009-11-09 08:56:31,706 INFO testing PyV8 module with V8 v2.0.5.5
flier@vm-debian-x64:~/pyv8/build/lib.linux-x86_64-2.5$ ldd _PyV8.so
linux-vdso.so.1 => (0x00007fffc3bff000)
libboost_python-py25.so.1.35.0 => /usr/lib/libboost_python-py25.so.1.35.0
(0x00007ff140037000)
librt.so.1 => /lib/librt.so.1 (0x00007ff13fe2e000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007ff13fb21000)
libm.so.6 => /lib/libm.so.6 (0x00007ff13f89e000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007ff13f687000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007ff13f46a000)
libc.so.6 => /lib/libc.so.6 (0x00007ff13f117000)
libutil.so.1 => /lib/libutil.so.1 (0x00007ff13ef14000)
libdl.so.2 => /lib/libdl.so.2 (0x00007ff13ed0f000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff140734000)
Original comment by flier...@gmail.com
on 8 Jan 2010 at 2:49
sciyoshi@sciyoshi-vm:~/pyv8/build/lib.linux-x86_64-2.6$ uname -a
Linux sciyoshi-vm 2.6.31-17-generic #54-Ubuntu SMP Thu Dec 10 17:01:44 UTC 2009
x86_64 GNU/Linux
The segfault is always reproducible with that same backtrace, however when I
run it
in verbose mode there is no segfault (however, there is still a failing test:
======================================================================
FAIL: testErrorInfo (__main__.TestWrapper)
----------------------------------------------------------------------
Traceback (most recent call last):
File "PyV8.py", line 714, in testErrorInfo
' at test:17:25', e.stackTrace)
AssertionError: 'Error: hello world\n at Error (unknown source)\n at hello
(test:14:35)\n at test:17:25' != 'Error: hello world\n at Error (unknown
source)\n at hello (test:14:35)\n at test:11:11'
----------------------------------------------------------------------
Original comment by sciyoshi
on 8 Jan 2010 at 6:25
Also:
sciyoshi@sciyoshi-vm:~/pyv8/build/lib.linux-x86_64-2.6$ ldd _PyV8.so
linux-vdso.so.1 => (0x00007fffa90fd000)
libboost_python-py26.so.1.40.0 => /usr/lib/libboost_python-py26.so.1.40.0
(0x00007f9713456000)
librt.so.1 => /lib/librt.so.1 (0x00007f971324e000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f9712f3d000)
libm.so.6 => /lib/libm.so.6 (0x00007f9712cb9000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f9712aa2000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f9712885000)
libc.so.6 => /lib/libc.so.6 (0x00007f9712516000)
libutil.so.1 => /lib/libutil.so.1 (0x00007f9712313000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f971210e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9713c2e000)
Original comment by sciyoshi
on 8 Jan 2010 at 6:26
It's very strange, I installed python 2.6 and its also ok, could you upload a
core dump
file?
flier@vm-debian-x64:~/pyv8/build/lib.linux-x86_64-2.6$ ldd _PyV8.so
linux-vdso.so.1 => (0x00007fffdf7ff000)
libboost_python.so.1.41.0 => /usr/local/lib/libboost_python.so.1.41.0
(0x00007ffa31168000)
librt.so.1 => /lib/librt.so.1 (0x00007ffa30f56000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007ffa30c49000)
libm.so.6 => /lib/libm.so.6 (0x00007ffa309c6000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007ffa307af000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007ffa30592000)
libc.so.6 => /lib/libc.so.6 (0x00007ffa3023f000)
libutil.so.1 => /lib/libutil.so.1 (0x00007ffa3003c000)
libdl.so.2 => /lib/libdl.so.2 (0x00007ffa2fe37000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffa31952000)
base on your call stack, it seems crashed when test unicode supports
// pyv8.py:900
def testUnicode(self):
with JSContext() as ctxt:
self.assertEquals(u"人", unicode(ctxt.eval("\"人\""), "utf-8"))
self.assertEquals(u"é", unicode(ctxt.eval("\"é\""), "utf-8"))
func = ctxt.eval("(function (msg) { return msg.length; })")
self.assertEquals(2, func(u"测试"))
// wrapper.cpp:840
if (value->IsString())
{
v8::String::Utf8Value str(v8::Handle<v8::String>::Cast(value));
return py::str(*str, str.length());
}
but the parameters seems ok
#0 0x000000000045417a in PyObject_Malloc ()
#1 0x000000000045bd12 in PyString_FromStringAndSize ()
#2 0x00007ffff66be977 in boost::python::detail::str_base::str_base(char
const*, unsigned long) () from /usr/lib/libboost_python-py26.so.1.40.0
#3 0x00007ffff69e4b63 in str (this=0x7fffffffb950, start=0x93f750 "人",
length=3) at /usr/include/boost/python/str.hpp:155
// stringobject.c:92 at Python source
/* Inline PyObject_NewVar */
op = (PyStringObject *)PyObject_MALLOC(PyStringObject_SIZE + size);
if (op == NULL)
return PyErr_NoMemory();
Original comment by flier...@gmail.com
on 9 Jan 2010 at 2:31
The core dump is too big to upload here (30MB), so I've put it on my webserver
which
you can access at http://sciyoshi.com/media/pyv8.core - let me know if you need
any
more info. This is using the latest version of V8 from Subversion.
Original comment by sciyoshi
on 9 Jan 2010 at 7:41
I'm confusing, your post the call stack that finished at
#0 0x000000000045417a in PyObject_Malloc ()
#1 0x000000000045bd12 in PyString_FromStringAndSize ()
But when I open the core dump, it finished at
(gdb) bt full
#0 0x000000000045417a in set_intersection (so=0x5, other=<value optimized
out>) at
Objects/setobject.c:1310
key = (PyObject *) 0x2b
it = <value optimized out>
could you help me to print the call stack in gdb? just use the following
commands
gdb python pyv8.core
(gdb) bt full
Original comment by flier...@gmail.com
on 9 Jan 2010 at 9:24
That's strange; the full backtrace with bt full gives
#0 0x000000000045417a in PyObject_Malloc ()
No symbol table info available.
#1 0x000000000045bd12 in PyString_FromStringAndSize ()
No symbol table info available.
#2 0x00007ffff66be977 in boost::python::detail::str_base::str_base(char const*,
unsigned long) () from /usr/lib/libboost_python-py26.so.1.40.0
No symbol table info available.
#3 0x00007ffff69e4b63 in str (this=0x7fffffffb950, start=0xa9f000 "人",
length=3) at
/usr/include/boost/python/str.hpp:155
No locals.
#4 0x00007ffff6a0c583 in CJavascriptObject::Wrap (value=..., self=...) at
src/Wrapper.cpp:847
str = {str_ = 0xa9f000 "人", length_ = 3}
handle_scope = {previous_ = {extensions = 1, next = 0xaa4f88, limit =
0xaa6f70}, is_closed_ = false}
#5 0x00007ffff69f0e95 in CEngine::ExecuteScript (this=0x7fffffffbb3f,
script=...) at
src/Engine.cpp:367
handle_scope = {previous_ = {extensions = 0, next = 0x0, limit = 0x0},
is_closed_ = false}
try_catch = {next_ = 0x0, exception_ = 0x7ffff7e34209, message_ = 0x0,
is_verbose_ = false, can_continue_ = true, capture_message_ = true, rethrow_ =
false}
result = {val_ = 0xaa4f80}
#6 0x00007ffff69f0f43 in CScript::Run (this=0xa0e960) at src/Engine.cpp:374
handle_scope = {previous_ = {extensions = -1, next = 0x0, limit = 0x0},
is_closed_ = false}
#7 0x00007ffff69e4455 in CContext::Evaluate (this=0xa85ac0, src=...) at
src/Context.cpp:157
engine = {<No data fields>}
script = {px = 0xa0e960, pn = {pi_ = 0xa9c450}}
#8 0x00007ffff69eea20 in
boost::python::detail::invoke<boost::python::to_python_value<boost::python::api:
:object
const&>, boost::python::api::object (CContext::*)(std::string const&),
boost::python::arg_from_python<CContext&>,
boost::python::arg_from_python<std::string
const&> > (rc=..., f=@0x96f698, tc=..., ac0=...) at
/usr/include/boost/python/detail/invoke.hpp:88
No locals.
#9 0x00007ffff69ed74f in
boost::python::detail::caller_arity<2u>::impl<boost::python::api::object
(CContext::*)(std::string const&), boost::python::default_call_policies,
boost::mpl::vector3<boost::python::api::object, CContext&, std::string const&>
>::operator() (this=0x96f698, args_=0xa3d998) at
/usr/include/boost/python/detail/caller.hpp:223
inner_args = 0xa3d998
c1 = {<boost::python::converter::arg_rvalue_from_python<std::string const&>>
= {m_data = {<boost::python::converter::rvalue_from_python_storage<std::string
const&>> = {stage1 = {
convertible = 0x7fffffffbc20, construct = 0x7ffff66d61a0}, storage
= {t0 = -24 '\350', t1 = -4120, t2 = 11137000, t3 = 11137000, t4 =
1.5606261e-38, t5
= 5.5024090977339628e-317,
t6 = -24 '\350', t7 = 0xa9efe8, t8 = 0xa9efe8, t9 = 11137000, t10 =
-24 '\350', bytes = "\350\357\251\000\000\000\000"}}, <No data fields>},
m_source = 0x7ffff6e93600}, <No data fields>}
c0 = {<boost::python::converter::reference_arg_from_python<CContext&>> =
{<boost::python::converter::arg_lvalue_from_python_base> = {m_result =
0xa85ac0}, <No
data fields>}, <No data fields>}
result = 0x7fffffffbc60
#10 0x00007ffff69ec675 in
boost::python::objects::caller_py_function_impl<boost::python::detail::caller<bo
ost::python::api::object
(CContext::*)(std::string const&), boost::python::default_call_policies,
boost::mpl::vector3<boost::python::api::object, CContext&, std::string const&> >
>::operator() (this=0x96f690, args=0xa3d998, kw=0x0) at
/usr/include/boost/python/object/py_function.hpp:38
No locals.
#11 0x00007ffff66cbd4e in boost::python::objects::function::call(_object*,
_object*)
const () from /usr/lib/libboost_python-py26.so.1.40.0
No symbol table info available.
#12 0x00007ffff66cbf38 in ?? () from /usr/lib/libboost_python-py26.so.1.40.0
No symbol table info available.
#13 0x00007ffff66d4213 in
boost::python::detail::exception_handler::operator()(boost::function0<void>
const&)
const () from /usr/lib/libboost_python-py26.so.1.40.0
No symbol table info available.
#14 0x00007ffff69df082 in
boost::python::detail::translate_exception<CJavascriptException, void
(*)(CJavascriptException const&)>::operator() (this=0x88bb38, handler=...,
f=...,
translate=0x7ffff69da3ee <ExceptionTranslator::Translate(CJavascriptException
const&)>) at /usr/include/boost/python/detail/translate_exception.hpp:46
No locals.
#15 0x00007ffff69de87f in boost::_bi::list3<boost::arg<1>, boost::arg<2>,
boost::_bi::value<void (*)(CJavascriptException const&)> >::operator()<bool,
boost::python::detail::translate_exception<CJavascriptException, void
(*)(CJavascriptException const&)>,
boost::_bi::list2<boost::python::detail::exception_handler const&,
boost::function0<void> const&> > (this=0x88bb40, f=..., a=...)
at /usr/include/boost/bind/bind.hpp:375
No locals.
#16 0x00007ffff69de0d8 in boost::_bi::bind_t<bool,
boost::python::detail::translate_exception<CJavascriptException, void
(*)(CJavascriptException const&)>, boost::_bi::list3<boost::arg<1>,
boost::arg<2>,
boost::_bi::value<void (*)(CJavascriptException const&)> >
>::operator()<boost::python::detail::exception_handler, boost::function0<void> >
(this=0x88bb38, a1=..., a2=...)
at /usr/include/boost/bind/bind_template.hpp:102
a = {<boost::_bi::storage2<boost::python::detail::exception_handler const&,
boost::function0<void> const&>> =
{<boost::_bi::storage1<boost::python::detail::exception_handler const&>> = {
a1_ = @0x88bb30}, a2_ = @0x7fffffffbf10}, <No data fields>}
#17 0x00007ffff69ddbae in
boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool,
boost::python::detail::translate_exception<CJavascriptException, void
(*)(CJavascriptException const&)>, boost::_bi::list3<boost::arg<1>,
boost::arg<2>,
boost::_bi::value<void (*)(CJavascriptException const&)> > >, bool,
boost::python::detail::exception_handler const&, boost::function0<void>
const&>::invoke (function_obj_ptr=..., a0=..., a1=...) at
/usr/include/boost/function/function_template.hpp:132
f = 0x88bb38
#18 0x00007ffff66d3fe3 in
boost::python::handle_exception_impl(boost::function0<void>) () from
/usr/lib/libboost_python-py26.so.1.40.0
No symbol table info available.
#19 0x00007ffff66c96b8 in ?? () from /usr/lib/libboost_python-py26.so.1.40.0
No symbol table info available.
#20 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#21 0x00000000004a199c in PyEval_EvalFrameEx ()
No symbol table info available.
#22 0x00000000004a40e0 in PyEval_EvalCodeEx ()
No symbol table info available.
#23 0x00000000004a245f in PyEval_EvalFrameEx ()
No symbol table info available.
#24 0x00000000004a40e0 in PyEval_EvalCodeEx ()
No symbol table info available.
#25 0x000000000052bf2d in ?? ()
No symbol table info available.
#26 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#27 0x00000000004a0f31 in PyEval_EvalFrameEx ()
No symbol table info available.
#28 0x00000000004a40e0 in PyEval_EvalCodeEx ()
No symbol table info available.
#29 0x000000000052be30 in ?? ()
No symbol table info available.
#30 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#31 0x00000000004254ff in ?? ()
No symbol table info available.
#32 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#33 0x0000000000470a40 in ?? ()
No symbol table info available.
#34 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#35 0x00000000004a199c in PyEval_EvalFrameEx ()
No symbol table info available.
#36 0x00000000004a40e0 in PyEval_EvalCodeEx ()
No symbol table info available.
#37 0x000000000052bf2d in ?? ()
No symbol table info available.
#38 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#39 0x00000000004a0f31 in PyEval_EvalFrameEx ()
No symbol table info available.
#40 0x00000000004a40e0 in PyEval_EvalCodeEx ()
No symbol table info available.
#41 0x000000000052be30 in ?? ()
No symbol table info available.
#42 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#43 0x00000000004254ff in ?? ()
No symbol table info available.
#44 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#45 0x0000000000470a40 in ?? ()
No symbol table info available.
#46 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#47 0x00000000004a199c in PyEval_EvalFrameEx ()
No symbol table info available.
#48 0x00000000004a40e0 in PyEval_EvalCodeEx ()
No symbol table info available.
#49 0x000000000052bf2d in ?? ()
No symbol table info available.
#50 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#51 0x00000000004a0f31 in PyEval_EvalFrameEx ()
No symbol table info available.
#52 0x00000000004a40e0 in PyEval_EvalCodeEx ()
No symbol table info available.
#53 0x000000000052be30 in ?? ()
No symbol table info available.
#54 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#55 0x00000000004254ff in ?? ()
No symbol table info available.
#56 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#57 0x0000000000470a40 in ?? ()
No symbol table info available.
#58 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#59 0x00000000004a199c in PyEval_EvalFrameEx ()
No symbol table info available.
#60 0x00000000004a2e47 in PyEval_EvalFrameEx ()
No symbol table info available.
#61 0x00000000004a2e47 in PyEval_EvalFrameEx ()
No symbol table info available.
#62 0x00000000004a40e0 in PyEval_EvalCodeEx ()
No symbol table info available.
#63 0x000000000052be30 in ?? ()
No symbol table info available.
#64 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#65 0x00000000004254ff in ?? ()
No symbol table info available.
#66 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#67 0x000000000047068e in ?? ()
No symbol table info available.
#68 0x000000000046b92f in ?? ()
No symbol table info available.
#69 0x000000000041d6e7 in PyObject_Call ()
No symbol table info available.
#70 0x00000000004a199c in PyEval_EvalFrameEx ()
No symbol table info available.
#71 0x00000000004a40e0 in PyEval_EvalCodeEx ()
No symbol table info available.
#72 0x00000000004a41b2 in PyEval_EvalCode ()
No symbol table info available.
#73 0x00000000004c33a0 in PyRun_FileExFlags ()
No symbol table info available.
#74 0x00000000004c3564 in PyRun_SimpleFileExFlags ()
No symbol table info available.
#75 0x0000000000418ab7 in Py_Main ()
No symbol table info available.
#76 0x00007ffff6fd0abd in __libc_start_main () from /lib/libc.so.6
No symbol table info available.
#77 0x0000000000417ca9 in _start ()
No symbol table info available.
Original comment by sciyoshi
on 10 Jan 2010 at 10:02
Maybe it's the Boost version? In order to fix the other compilation problem I'm
using
a custom libboost-python1.40 from ajmitch's PPA...
Original comment by sciyoshi
on 10 Jan 2010 at 10:03
Sorry, I have no idea at all, because your call stack seems ok, could you check
the
following page, it seems be specific to some system.
http://bugs.python.org/issue4732
msg78623 - (view) Author: Andrew (ajg) Date: 2008-12-31 16:24
This problem appears to be specific to RHEL 5, and is not a Python
problem. Linking against Google malloc (libtcmalloc) fixes the issue.
msg81218 - (view) Author: Farshad Khoshkhui (farshad) Date: 2009-02-05 16:52
This happens for me on several debian and ubuntu machines with python
2.5 as well as 2.6 as I reported in #571885. I'll try your script and
linking with tcmalloc and get back with results.
Original comment by flier...@gmail.com
on 11 Jan 2010 at 3:07
Original issue reported on code.google.com by
sciyoshi
on 8 Jan 2010 at 9:30