ImportError: dlopen(.../pytrace/tracer.so, 2): Symbol not found: _pyobj_to_cstr
Closed this issue · 7 comments
Tried to install on OS X Mountain Lion. Here's what I got:
gavriep-mac: ~$ brew install protobuf-c
==> Downloading http://protobuf-c.googlecode.com/files/protobuf-c-0.15.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/protobuf-c/0.15
==> make install
/usr/local/Cellar/protobuf-c/0.15: 11 files, 372K, built in 31 seconds
gavriep-mac: ~ $ mkvirtualenv trace
...
(trace)gavriep-mac: ~ $ pip install pytrace
...
Successfully installed pytrace sqlalchemy urwid
Cleaning up...
(trace)gavriep-mac: ~ $ cat /tmp/hello.py ~
print "Hello"
(trace)gavriep-mac: ~ $ pytrace /tmp/hello.py ~
Traceback (most recent call last):
File "/Users/gavriep/.virtualenvs/trace/bin/pytrace", line 8, in <module>
load_entry_point('pytrace==0.1.4', 'console_scripts', 'pytrace')()
File "/Users/gavriep/.virtualenvs/trace/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 318, in load_entry_point
File "/Users/gavriep/.virtualenvs/trace/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 2221, in load_entry_point
File "/Users/gavriep/.virtualenvs/trace/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 1954, in load
File "/Users/gavriep/.virtualenvs/trace/lib/python2.7/site-packages/pytrace/__init__.py", line 4, in <module>
from . import tracer
ImportError: dlopen(/Users/gavriep/.virtualenvs/trace/lib/python2.7/site-packages/pytrace/tracer.so, 2): Symbol not found: _pyobj_to_cstr
Referenced from: /Users/gavriep/.virtualenvs/trace/lib/python2.7/site-packages/pytrace/tracer.so
Expected in: flat namespace
in /Users/gavriep/.virtualenvs/trace/lib/python2.7/site-packages/pytrace/tracer.so
(trace)gavriep-mac: ~ $ ~
BTW, it was compiled using clang and not gcc, if that matters.
Here's the full compilation output:
Running setup.py install for pytrace
building 'pytrace.tracer' extension
clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -Iext -I/opt/local/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c ext/trace.c -o build/temp.macosx-10.8-intel-2.7/ext/trace.o -O0
clang: warning: argument unused during compilation: '-mno-fused-madd'
clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -Iext -I/opt/local/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c ext/serial.c -o build/temp.macosx-10.8-intel-2.7/ext/serial.o -O0
clang: warning: argument unused during compilation: '-mno-fused-madd'
ext/serial.c:73:23: warning: ordered comparison between pointer and integer ('int' and 'void *')
return (get_depth() < pthread_getspecific(no_trace_context_key) - DEPTH_MAGIC);
~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
ext/serial.c:41:23: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
bin_data->len = min(strlen(str), MAX_STR_SIZE);
~~~ ^~~~~~~~~~~
ext/serial.c:73:23: warning: ordered comparison between pointer and integer ('int' and 'void *')
return (get_depth() < pthread_getspecific(no_trace_context_key) - DEPTH_MAGIC);
~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -Iext -I/opt/local/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c ext/write.c -o build/temp.macosx-10.8-intel-2.7/ext/write.o -O0
clang: warning: argument unused during compilation: '-mno-fused-madd'
ext/write.c:13:25: warning: implicit conversion loses integer precision: 'unsigned long' to 'unsigned int' [-Wshorten-64-to-32]
ring_write(ring, buf, size);
~~~~~~~~~~ ^~~~
1 warning generated.
clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -Iext -I/opt/local/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c ext/ring.c -o build/temp.macosx-10.8-intel-2.7/ext/ring.o -O0
clang: warning: argument unused during compilation: '-mno-fused-madd'
clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -Iext -I/opt/local/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c ext/dump.c -o build/temp.macosx-10.8-intel-2.7/ext/dump.o -O0
clang: warning: argument unused during compilation: '-mno-fused-madd'
clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -Iext -I/opt/local/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c ext/db.c -o build/temp.macosx-10.8-intel-2.7/ext/db.o -O0
clang: warning: argument unused during compilation: '-mno-fused-madd'
ext/db.c:178:12: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
return sqlite3_last_insert_rowid(db);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ext/db.c:201:12: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
return sqlite3_last_insert_rowid(db);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ext/db.c:216:10: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
return sqlite3_last_insert_rowid(db);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ext/db.c:247:12: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
return sqlite3_last_insert_rowid(db);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ext/db.c:263:70: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long long') to 'long' [-Wshorten-64-to-32]
int trace_id = handle_trace(rec->type, rec->time, rec->depth, rec->tid, func_id);
~~~~~~~~~~~~ ~~~~~^~~
5 warnings generated.
ext/db.c:170:70: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
SQLITE_ASSERT(sqlite3_bind_text(select, 1, (char*) sym->data, sym->len, SQLITE_TRANSIENT));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
ext/db.c:9:47: note: expanded from macro 'SQLITE_ASSERT'
#define SQLITE_ASSERT(x) ASSERT(SQLITE_OK == (x))
^
ext/defs.h:25:13: note: expanded from macro 'ASSERT'
((void) ((expression) ? 0 : __ASSERT (expression, __FILE__, __LINE__)))
^~~~~~~~~~
ext/db.c:175:72: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
SQLITE_ASSERT(sqlite3_bind_text(insert, 1, (char*) sym->data, sym->len, SQLITE_TRANSIENT));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
ext/db.c:9:47: note: expanded from macro 'SQLITE_ASSERT'
#define SQLITE_ASSERT(x) ASSERT(SQLITE_OK == (x))
^
ext/defs.h:25:13: note: expanded from macro 'ASSERT'
((void) ((expression) ? 0 : __ASSERT (expression, __FILE__, __LINE__)))
^~~~~~~~~~
ext/db.c:178:12: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
return sqlite3_last_insert_rowid(db);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ext/db.c:191:91: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
SQLITE_ASSERT(sqlite3_bind_text(stmt_funcs_select, 3, (char*) function->data, function->len, SQLITE_TRANSIENT));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
ext/db.c:9:47: note: expanded from macro 'SQLITE_ASSERT'
#define SQLITE_ASSERT(x) ASSERT(SQLITE_OK == (x))
^
ext/defs.h:25:13: note: expanded from macro 'ASSERT'
((void) ((expression) ? 0 : __ASSERT (expression, __FILE__, __LINE__)))
^~~~~~~~~~
ext/db.c:198:93: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
SQLITE_ASSERT(sqlite3_bind_text(stmt_funcs_insert, 3, (char*) function->data, function->len, SQLITE_TRANSIENT));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
ext/db.c:9:47: note: expanded from macro 'SQLITE_ASSERT'
#define SQLITE_ASSERT(x) ASSERT(SQLITE_OK == (x))
^
ext/defs.h:25:13: note: expanded from macro 'ASSERT'
((void) ((expression) ? 0 : __ASSERT (expression, __FILE__, __LINE__)))
^~~~~~~~~~
ext/db.c:201:12: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
return sqlite3_last_insert_rowid(db);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ext/db.c:212:57: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
SQLITE_ASSERT(sqlite3_bind_int(stmt_traces_insert, 4, tid));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
ext/db.c:9:47: note: expanded from macro 'SQLITE_ASSERT'
#define SQLITE_ASSERT(x) ASSERT(SQLITE_OK == (x))
^
ext/defs.h:25:13: note: expanded from macro 'ASSERT'
((void) ((expression) ? 0 : __ASSERT (expression, __FILE__, __LINE__)))
^~~~~~~~~~
ext/db.c:216:10: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
return sqlite3_last_insert_rowid(db);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ext/db.c:247:12: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
return sqlite3_last_insert_rowid(db);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9 warnings generated.
clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -Iext -I/opt/local/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c ext/record_pb.c -o build/temp.macosx-10.8-intel-2.7/ext/record_pb.o -O0
clang: warning: argument unused during compilation: '-mno-fused-madd'
clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -Iext -I/opt/local/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c ext/shared_ring.c -o build/temp.macosx-10.8-intel-2.7/ext/shared_ring.o -O0
clang: warning: argument unused during compilation: '-mno-fused-madd'
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 build/temp.macosx-10.8-intel-2.7/ext/trace.o build/temp.macosx-10.8-intel-2.7/ext/serial.o build/temp.macosx-10.8-intel-2.7/ext/write.o build/temp.macosx-10.8-intel-2.7/ext/ring.o build/temp.macosx-10.8-intel-2.7/ext/dump.o build/temp.macosx-10.8-intel-2.7/ext/db.o build/temp.macosx-10.8-intel-2.7/ext/record_pb.o build/temp.macosx-10.8-intel-2.7/ext/shared_ring.o -lprotobuf-c -lsqlite3 -o build/lib.macosx-10.8-intel-2.7/pytrace/tracer.so
ld: warning: ignoring file /usr/local/lib/libprotobuf-c.dylib, file was built for unsupported file format ( 0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0 ) which is not the architecture being linked (i386): /usr/local/lib/libprotobuf-c.dylib
Installing pytrace script to /Users/gavriep/.virtualenvs/trace/bin
Running setup.py install for sqlalchemy
building 'sqlalchemy.cprocessors' extension
clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c lib/sqlalchemy/cextension/processors.c -o build/temp.macosx-10.8-intel-2.7/lib/sqlalchemy/cextension/processors.o
clang: warning: argument unused during compilation: '-mno-fused-madd'
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 build/temp.macosx-10.8-intel-2.7/lib/sqlalchemy/cextension/processors.o -o build/lib.macosx-10.8-intel-2.7/sqlalchemy/cprocessors.so
building 'sqlalchemy.cresultproxy' extension
clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c lib/sqlalchemy/cextension/resultproxy.c -o build/temp.macosx-10.8-intel-2.7/lib/sqlalchemy/cextension/resultproxy.o
clang: warning: argument unused during compilation: '-mno-fused-madd'
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 build/temp.macosx-10.8-intel-2.7/lib/sqlalchemy/cextension/resultproxy.o -o build/lib.macosx-10.8-intel-2.7/sqlalchemy/cresultproxy.so
warning: no files found matching '*.jpg' under directory 'doc'
no previously-included directories found matching 'doc/build/output'
Running setup.py install for urwid
building 'urwid.str_util' extension
clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c source/str_util.c -o build/temp.macosx-10.8-intel-2.7/source/str_util.o
clang: warning: argument unused during compilation: '-mno-fused-madd'
source/str_util.c:162:20: warning: implicit conversion loses integer precision: 'const long' to 'int' [-Wshorten-64-to-32]
return widths[i+1];
~~~~~~ ^~~~~~~~~~~
source/str_util.c:717:11: warning: implicit conversion loses integer precision: 'Py_ssize_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
ret = Py_CalcWidth(text, start_offs, end_offs);
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 build/temp.macosx-10.8-intel-2.7/source/str_util.o -o build/lib.macosx-10.8-intel-2.7/urwid/str_util.so
Ok, I reproduced it. It happens when compiling with clang. Turns out the inline keyword is interpreted differently in gcc (specifically c89) and clang.
Fixed! thanks. And If you want to trace something, you need to call functions, not print statements (-:
You can pip install the new version (0.1.5)
Works fine now. This is totally cool! It's going to be useful.
The question, of course: Will it succeed in tracing tlib? :-)
I'm optimistic
On Aug 16, 2012 12:10 PM, "Gavrie Philipson" notifications@github.com
wrote:
Works fine now. This is totally cool! It's going to be useful.
The question, of course: Will it succeed in tracing tlib? :-)—
Reply to this email directly or view it on GitHubhttps://github.com//issues/1#issuecomment-7780270.