Hi,

When I compile moses with TCMalloc, invoking lmplz without limiting the memory 
used for sorting results in what appears to be a deadlock. If I compiled using 
the --without-tcmalloc switch, the problem goes away.

If I run it with:
  bin/lmplz -T /tmp -o 3 < bin/testcorpus > testcorpus.out
I get a deadlock

If I run it with to -S option, I can get it to work:
   bin/lmplz -S 50% -T /tmp -o 3 < bin/testcorpus > testcorpus.out

In my setup, if I go above 54% it always deadlocks.

I compiled it with the latest gperftools version and boost 1.55, the machine I 
run it on has 40Gig of physical RAM

Heres the backtraces for all threads when it locks up


Thread 6 (Thread 0x7ffff61dd700 (LWP 32333)):
#0  0x00007ffff6d95000 in sem_wait () from /lib64/libpthread.so.0
#1  0x0000000000431039 in boost::interprocess::ipcdetail::semaphore_wait 
(handle=0x1d08282e0) at 
/opt/boost-1.55/include/boost/interprocess/sync/posix/semaphore_wrapper.hpp:157
#2  0x0000000000431118 in boost::interprocess::ipcdetail::posix_semaphore::wait 
(this=0x1d08282e0) at 
/opt/boost-1.55/include/boost/interprocess/sync/posix/semaphore.hpp:45
#3  0x000000000043116e in boost::interprocess::interprocess_semaphore::wait 
(this=0x1d08282e0) at 
/opt/boost-1.55/include/boost/interprocess/sync/interprocess_semaphore.hpp:128
#4  0x00000000004311a3 in util::WaitSemaphore (on=...) at ./util/pcqueue.hh:16
#5  0x00000000004323b4 in util::PCQueue<util::stream::Block>::Consume 
(this=0x1d08282c0, out=...) at ./util/pcqueue.hh:59
#6  0x000000000042f392 in util::stream::Link::Init (this=0x7ffff61dcd70, 
position=...) at 
/store/disk1/jbeaulac/moses-src/RELEASE-2.1.1.git/util/stream/chain.cc:115
#7  0x000000000042f419 in util::stream::Link::Link (this=0x7ffff61dcd70, 
position=...) at 
/store/disk1/jbeaulac/moses-src/RELEASE-2.1.1.git/util/stream/chain.cc:119
#8  0x000000000042e74a in util::stream::Recycler::Run (this=0x1d082c5f8, 
position=...) at 
/store/disk1/jbeaulac/moses-src/RELEASE-2.1.1.git/util/stream/chain.cc:31
#9  0x0000000000435d76 in 
util::stream::Thread::operator()<util::stream::ChainPosition, 
util::stream::Recycler> (this=0xfa01c0, position=..., worker=...)
    at ./util/stream/chain.hh:54
#10 0x0000000000435c55 in 
boost::_bi::list2<boost::_bi::value<util::stream::ChainPosition>, 
boost::_bi::value<util::stream::Recycler> 
>::operator()<boost::reference_wrapper<util::stream::Thread>, 
boost::_bi::list0> (this=0x1d082c5c0, f=..., a=...) at 
/opt/boost-1.55/include/boost/bind/bind.hpp:313
#11 0x0000000000435a07 in boost::_bi::bind_t<void, 
boost::reference_wrapper<util::stream::Thread>, 
boost::_bi::list2<boost::_bi::value<util::stream::ChainPosition>, 
boost::_bi::value<util::stream::Recycler> > >::operator() (this=0x1d082c5b8) at 
/opt/boost-1.55/include/boost/bind/bind_template.hpp:20
#12 0x00000000004357d4 in boost::detail::thread_data<boost::_bi::bind_t<void, 
boost::reference_wrapper<util::stream::Thread>, 
boost::_bi::list2<boost::_bi::value<util::stream::ChainPosition>, 
boost::_bi::value<util::stream::Recycler> > > >::run (this=0x1d082c400) at 
/opt/boost-1.55/include/boost/thread/detail/thread.hpp:117
#13 0x00000000004e584a in thread_proxy ()
#14 0x00007ffff6d8f0a2 in start_thread () from /lib64/libpthread.so.0
#15 0x00007ffff6ac4b5d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7ffff7fd8740 (LWP 32323)):
#0  0x00007ffff6d9304f in pthread_cond_wait@@GLIBC_2.3.2 () from 
/lib64/libpthread.so.0
#1  0x00000000004e87eb in 
boost::condition_variable::wait(boost::unique_lock<boost::mutex>&) ()
#2  0x00000000004e6276 in boost::thread::join_noexcept() ()
#3  0x0000000000430a7b in boost::thread::join (this=0xfa01c0) at 
/opt/boost-1.55/include/boost/thread/detail/thread.hpp:756
#4  0x000000000042e6b1 in util::stream::Thread::~Thread (this=0xfa01c0, 
__in_chrg=<optimized out>) at 
/store/disk1/jbeaulac/moses-src/RELEASE-2.1.1.git/util/stream/chain.cc:22
#5  0x00000000004353c2 in boost::checked_delete<util::stream::Thread const> 
(x=0xfa01c0) at /opt/boost-1.55/include/boost/checked_delete.hpp:34
#6  0x00000000004350aa in boost::delete_clone<util::stream::Thread> 
(r=0xfa01c0) at 
/opt/boost-1.55/include/boost/ptr_container/clone_allocator.hpp:56
#7  0x0000000000434bb0 in 
boost::heap_clone_allocator::deallocate_clone<util::stream::Thread> 
(r=0xfa01c0) at 
/opt/boost-1.55/include/boost/ptr_container/clone_allocator.hpp:74
#8  0x000000000043452e in 
boost::ptr_container_detail::reversible_ptr_container<boost::ptr_container_detail::sequence_config<util::stream::Thread,
 std::vector<void*, std::allocator<void*> > >, 
boost::heap_clone_allocator>::null_clone_allocator<false>::deallocate_clone 
(x=0xfa01c0)
    at 
/opt/boost-1.55/include/boost/ptr_container/detail/reversible_ptr_container.hpp:126
#9  0x0000000000434c6b in 
boost::ptr_container_detail::reversible_ptr_container<boost::ptr_container_detail::sequence_config<util::stream::Thread,
 std::vector<void*, std::allocator<void*> > >, 
boost::heap_clone_allocator>::null_policy_deallocate_clone (x=0xfa01c0) at 
/opt/boost-1.55/include/boost/ptr_container/detail/reversible_ptr_container.hpp:276
#10 0x0000000000434676 in 
boost::ptr_container_detail::reversible_ptr_container<boost::ptr_container_detail::sequence_config<util::stream::Thread,
 std::vector<void*, std::allocator<void*> > >, 
boost::heap_clone_allocator>::remove<boost::void_ptr_iterator<__gnu_cxx::__normal_iterator<void**,
 std::vector<void*, std::allocator<void*> > >, util::stream::Thread> > 
(this=0xfc4048, i=...) at 
/opt/boost-1.55/include/boost/ptr_container/detail/reversible_ptr_container.hpp:250
#11 0x0000000000433e39 in 
boost::ptr_container_detail::reversible_ptr_container<boost::ptr_container_detail::sequence_config<util::stream::Thread,
 std::vector<void*, std::allocator<void*> > >, 
boost::heap_clone_allocator>::remove<boost::void_ptr_iterator<__gnu_cxx::__normal_iterator<void**,
 std::vector<void*, std::allocator<void*> > >, util::stream::Thread> > 
(this=0xfc4048, first=..., last=...) at 
/opt/boost-1.55/include/boost/ptr_container/detail/reversible_ptr_container.hpp:257
#12 0x0000000000433171 in 
boost::ptr_container_detail::reversible_ptr_container<boost::ptr_container_detail::sequence_config<util::stream::Thread,
 std::vector<void*, std::allocator<void*> > >, 
boost::heap_clone_allocator>::remove_all (this=0xfc4048) at 
/opt/boost-1.55/include/boost/ptr_container/detail/reversible_ptr_container.hpp:218
#13 0x000000000043219a in 
boost::ptr_container_detail::reversible_ptr_container<boost::ptr_container_detail::sequence_config<util::stream::Thread,
 std::vector<void*, std::allocator<void*> > >, 
boost::heap_clone_allocator>::clear (this=0xfc4048) at 
/opt/boost-1.55/include/boost/ptr_container/detail/reversible_ptr_container.hpp:601
#14 0x000000000042ee4a in util::stream::Chain::Wait (this=0xfc4000, 
release_memory=true) at 
/store/disk1/jbeaulac/moses-src/RELEASE-2.1.1.git/util/stream/chain.cc:68
#15 0x000000000042ebd0 in util::stream::Chain::~Chain (this=0xfc4000, 
__in_chrg=<optimized out>) at 
/store/disk1/jbeaulac/moses-src/RELEASE-2.1.1.git/util/stream/chain.cc:47
#16 0x00000000004829bc in lm::builder::FixedArray<util::stream::Chain>::clear 
(this=0x7fffffffdb60) at ./lm/builder/multi_stream.hh:64
#17 0x00000000004815e3 in 
lm::builder::FixedArray<util::stream::Chain>::~FixedArray (this=0x7fffffffdb60, 
__in_chrg=<optimized out>) at ./lm/builder/multi_stream.hh:40
#18 0x0000000000481369 in lm::builder::Chains::~Chains (this=0x7fffffffdb60, 
__in_chrg=<optimized out>) at ./lm/builder/multi_stream.hh:92
#19 0x000000000047f387 in lm::builder::(anonymous namespace)::Master::~Master 
(this=0x7fffffffdad0, __in_chrg=<optimized out>)
---Type <return> to continue, or q <return> to quit---
    at 
/store/disk1/jbeaulac/moses-src/RELEASE-2.1.1.git/lm/builder/pipeline.cc:33
#20 0x000000000047fc0c in lm::builder::Pipeline (config=..., text_file=0, 
out_arpa=1) at 
/store/disk1/jbeaulac/moses-src/RELEASE-2.1.1.git/lm/builder/pipeline.cc:318
#21 0x00000000004a2bec in main (argc=5, argv=0x7fffffffe2c8) at 
/store/disk1/jbeaulac/moses-src/RELEASE-2.1.1.git/lm/builder/lmplz_main.cc:109

---
Jean-Francois Beaulac
Programmeur analyste
Versacom inc.
6e étage
1501, avenue McGill College
Montréal (Québec)  H3A 3M8
514-394-7142
www.versacom.ca<http://www.versacom.ca>

_______________________________________________
Moses-support mailing list
[email protected]
http://mailman.mit.edu/mailman/listinfo/moses-support

Reply via email to