Am 26.02.2006 um 01:04 schrieb Reed Hedges:
fails to link wxterangreal:
...
-lvos -lwx_macud-2.5 -lircclient -lvosimpexp_3d -lASE -lpthread -
lboost_thread
/usr/bin/ld: Undefined symbols:
typeinfo for wxApp
...
Hmm, what is the output when you run "/sw/bin/wx-config --libs" ? I
think it ought to be linking against several wx libraries. Did you
install wx from fink?
There seems to be an installation of the wx libraries by default
(from XCode maybe),
which was used for compiling this:
/usr/bin/wx-config --libs
-framework QuickTime -framework IOKit -framework Carbon -framework
Cocoa -framework System -lwx_macud-2.5
I then installed the wxmac package and friends from fink, with a
different result:
/sw/bin/wx-config --libs
-L/sw/lib -L/sw/lib -framework QuickTime -framework IOKit -framework
Carbon -framework Cocoa -framework System -lwx_mac_xrc-2.6 -
lwx_mac_qa-2.6 -lwx_mac_html-2.6 -lwx_mac_adv-2.6 -lwx_mac_core-2.6 -
lwx_base_carbon_xml-2.6 -lwx_base_carbon_net-2.6 -lwx_base_carbon-2.6
Now /sw/bin/wx-config is the default, and configure in vos / CS / vos-
browser find it.
The result compile-wise is not much better though:
g++ -g -O2 -g -Wall -D_REENTRANT -D_PTHREADS -DBOOST_HAS_PTHREADS -
fvisibility=hidden -o wxterangreal wxterangreal-wxmain.o wxterangreal-
wxgui.o wxterangreal-mainframe.o wxterangreal-tabentry.o wxterangreal-
prefs.o wxterangreal-bookmarks.o wxterangreal-progmeter.o -Wl,-
multiply_defined -Wl,suppress -Wl,-framework -Wl,AppKit -Wl,-
framework -Wl,Foundation -framework CoreFoundation -framework AppKit -
framework QuickTime -framework IOKit -framework Carbon -framework
Cocoa -framework System -framework CoreFoundation -framework AppKit -
Wl,-bind_at_load -L/Users/otto/opt/vos-browser/apps/terangreal -L/
Users/otto/opt/vos/inplace/lib -L/sw/lib libterangreal.a -L/Users/
otto/opt/CS/./out/macosxppc/optimize/libs -lcrystalspace -lz -lm -lmx
-ldl -L/usr/local/lib -lmetaobject_a3dl -lmetaobject_misc -lvutil -
lvip -lvos -lwx_mac_xrc-2.6 -lwx_mac_qa-2.6 -lwx_mac_html-2.6 -
lwx_mac_adv-2.6 -lwx_mac_core-2.6 -lwx_base_carbon_xml-2.6 -
lwx_base_carbon_net-2.6 -lwx_base_carbon-2.6 -lircclient -
lvosimpexp_3d -lASE -lpthread -lboost_thread
/usr/bin/ld: Undefined symbols:
typeinfo for wxApp
typeinfo for wxThread
typeinfo for wxTimer
typeinfo for wxListBase
typeinfo for wxFrame
typeinfo for wxControl
typeinfo for wxPanel
typeinfo for wxGauge
collect2: ld returned 1 exit status
strange cluttered display
hangs with "rolling marble" busy mouse pointer
cannot move around or anything
Bad. Can you run it in the debugger and break here while it's
hung, and
look at the stack trace for each thread? How long did you wait?
After looking into this some more, I can say that Terangreal is not
really hanging.
Setting VOS_LOG_DEFAULT=3 shows a lot of networking activity,
constantly saying
things like
[Mon Feb 27 16:04:12 2006 (3) csVosA3DL] starting main thread task
[Mon Feb 27 16:04:12 2006 (3) csVosA3DL] completed main thread task
[Mon Feb 27 16:04:12 2006 (3) csVosA3DL] starting main thread task
[Mon Feb 27 16:04:12 2006 (3) csVosA3DL] completed main thread task
[Mon Feb 27 16:04:12 2006 (3) vosobject3d] vip://alu.mi.fu-berlin.de:
4232/152520399 event value is "0.000000 0.000000 0.000000", prop read
is "0.000000 0.000000 0.000000" and getPos() gave us 0 0 0
[Mon Feb 27 16:04:12 2006 (3) vosobject3d] vip://alu.mi.fu-berlin.de:
4232/152520399 event value is "0.000000 0.000000 1.000000 0.000000",
prop read is "0.000000 0.000000 1.000000 0.000000" and getPos() gave
us 0 0 1 0
over and over again, which I assume to result from movement listeners
of the user avatar.
I tried attaching gdb to the terangreal process as you suggested. I
actually attached and detached gdb multiple times, always arriving in
this state:
(gdb) attach 14704
Attaching to process 14704.
0x9000b1e8 in mach_msg_trap ()
(gdb) info threads
13 process 14704 thread 0x5903 0x9002b888 in
semaphore_wait_signal_trap ()
12 process 14704 thread 0x5803 0x9002b888 in
semaphore_wait_signal_trap ()
11 process 14704 thread 0x5603 0x9002b888 in
semaphore_wait_signal_trap ()
10 process 14704 thread 0x5403 0x9002b888 in
semaphore_wait_signal_trap ()
9 process 14704 thread 0x5203 0x9002b888 in
semaphore_wait_signal_trap ()
8 process 14704 thread 0x5003 0x9002b888 in
semaphore_wait_signal_trap ()
7 process 14704 thread 0x4e13 0x9002b888 in
semaphore_wait_signal_trap ()
6 process 14704 thread 0x4c03 0x9002b888 in
semaphore_wait_signal_trap ()
5 process 14704 thread 0x4a03 0x9002b888 in
semaphore_wait_signal_trap ()
4 process 14704 thread 0x4803 0x9002b888 in
semaphore_wait_signal_trap ()
3 process 14704 thread 0x4603 0x90053f48 in
semaphore_timedwait_signal_trap ()
2 process 14704 thread 0x3003 0x90023400 in recvfrom ()
* 1 process 14704 thread 0xd03 0x9000b1e8 in mach_msg_trap ()
(gdb) detach
Detaching from process 14704 thread 0xd03.
Full traces are probably a bit much, but here a quick overview:
Thread 1 is the only one I caught on some activity now and again, and
on inspection
I see it is a drawing thread, spending time in places like DrawMesh
() etc.
Thread 2 is probably the network thread, found in
VIP::SocketProcessorThread::operator()
Thread 3 is involved with network connections it seems, found in
VIP::Connection::idle
Thread 4 ... ummm, whats this now... VUtil::TaskQueue::addToPool
Thread 5 ... VUtil::TaskQueue::getNextTask
Thread 6 ... VUtil::TaskQueue::addToPool
Thread 7 ... something from CS maybe:
csThreadJobQueue::QueueRunnable::Run
Thread 8 - 12 ... VUtil::TaskQueue::addToPool
The addToPool things seem common, so here is a stack trace of Thread 4:
#0 0x9002b888 in semaphore_wait_signal_trap ()
#1 0x9002fffc in pthread_cond_wait ()
#2 0x01a33e90 in boost::condition::do_wait<boost::mutex>
(this=0xb6ea108, [EMAIL PROTECTED]) at /sw/include/boost/thread/
condition.hpp:149
#3 0x01a33f5c in
boost::condition::wait<boost::detail::thread::scoped_lock<boost::mutex>
> (this=0xb6ea108, [EMAIL PROTECTED]) at /sw/include/boost/thread/
condition.hpp:92
#4 0x01a33fa0 in VUtil::TaskHelper::wait (this=0xb6ea100,
[EMAIL PROTECTED]) at ../../../libs/vos/vutil/taskqueue.hh:57
#5 0x01a0d1b4 in VUtil::TaskQueue::addToPool (this=0xb6e7bf0,
h=0xb6ea100) at taskqueue.cc:184
#6 0x01a0d300 in VUtil::TaskHelper::operator() (this=0xb6ea100) at
taskqueue.cc:68
#7 0x01a381ac in VUtil::TaskHelperThread::operator()
(this=0xb6ea150) at ../../../libs/vos/vutil/taskqueue.hh:75
#8 0x01a381ec in
boost::detail::function::void_function_obj_invoker0<VUtil::TaskHelperThr
ead, void>::invoke (function_obj_ptr={obj_ptr = 0xb6ea150,
const_obj_ptr = 0xb6ea150, func_ptr = 0xb6ea150, data = "\v"}) at /sw/
include/boost/function/function_template.hpp:128
#9 0x00d89950 in boost::function0<void,
std::allocator<boost::function_base> >::operator() ()
#10 0x00d784e4 in thread_proxy ()
#11 0x9002b1e0 in _pthread_body ()
Others of this kind are similar, with varying parameters in frame #8
and up.
This does not tell me anything though, so if you have any more
suggestions for debugging,
please let me know.
Regards,
Karsten
_______________________________________________
vos-d mailing list
vos-d@interreality.org
http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d