pauldb89 / OxLM

OxLM: Oxford Neural Language Modelling Toolkit
http://www.clg.ox.ac.uk/
39 stars 7 forks source link

Segmentation fault with the program "score" #5

Open minhlab opened 7 years ago

minhlab commented 7 years ago

It doesn't say anything else.

$ OxLM-2017-10-09/bin/score -m output/lb-ec-chain.bin.ea34c9f24e06de6e957ea32f53ca9d72fe3a2e9e -t 3 -d output/ec_fn_chain_as_sentences.dev.unk.txt
Loading model from output/lb-ec-chain.bin.ea34c9f24e06de6e957ea32f53ca9d72fe3a2e9e...
Reading model took 40.19 seconds...
Reading test corpus...
Done reading test corpus...
Segmentation fault
minhlab commented 6 years ago

My friend and I found the problem: some unaligned pointers ended up in Eigen and broke it. This is a stack trace: (__P=0x2aaab8d64bc8 is not 16-aligned pointer).

#0  0x00002aaaabe7c49b in _mm_load_ps (__P=0x2aaab8d64bc8) at /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/xmmintrin.h:898
#1  Eigen::internal::pload<float __vector>(Eigen::internal::unpacket_traits<float __vector>::type const*) (from=0x2aaab8d64bc8)
    at /home/minhle/scratch/proref/OxLM-2017-10-09/src/third_party/eigen/Eigen/src/Core/arch/SSE/PacketMath.h:218
#2  0x00002aaaabe7d7b2 in Eigen::internal::ploadt<float __vector, 1>(Eigen::internal::unpacket_traits<float __vector>::type const*) (from=0x2aaab8d64bc8)
    at /home/minhle/scratch/proref/OxLM-2017-10-09/src/third_party/eigen/Eigen/src/Core/GenericPacketMath.h:290
#3  0x00002aaaabf84193 in Eigen::MapBase<Eigen::Block<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const, -1, 1, true>, 0>::packet<1> (
    this=0x7fffffffca80, rowId=0, colId=0) at /home/minhle/scratch/proref/OxLM-2017-10-09/src/third_party/eigen/Eigen/src/Core/MapBase.h:116
#4  0x00002aaaabf83dda in Eigen::DiagonalProduct<Eigen::Block<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const, -1, 1, true>, Eigen::DiagonalWrapper<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const>, 1>::packet_impl<1> (this=0x7fffffffca80, row=0, col=0, id=0)
    at /home/minhle/scratch/proref/OxLM-2017-10-09/src/third_party/eigen/Eigen/src/Core/DiagonalProduct.h:111
#5  0x00002aaaabf839a8 in Eigen::DiagonalProduct<Eigen::Block<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const, -1, 1, true>, Eigen::DiagonalWrapper<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const>, 1>::packet<1> (this=0x7fffffffca80, row=0, col=0)
    at /home/minhle/scratch/proref/OxLM-2017-10-09/src/third_party/eigen/Eigen/src/Core/DiagonalProduct.h:83
#6  0x00002aaaabf82f96 in Eigen::DiagonalProduct<Eigen::Block<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const, -1, 1, true>, Eigen::DiagonalWrapper<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const>, 1>::packet<1> (this=0x7fffffffca80, idx=0)
    at /home/minhle/scratch/proref/OxLM-2017-10-09/src/third_party/eigen/Eigen/src/Core/DiagonalProduct.h:92
#7  0x00002aaaabf81749 in Eigen::SelfCwiseBinaryOp<Eigen::internal::scalar_sum_op<float>, Eigen::Matrix<float, -1, 1, 0, -1, 1>, Eigen::DiagonalProduct<Eigen::Block<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const, -1, 1, true>, Eigen::DiagonalWrapper<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const>, 1> >::copyPacket<Eigen::DiagonalProduct<Eigen::Block<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const, -1, 1, true>, Eigen::DiagonalWrapper<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const>, 1>, 1, 1> (this=0x7fffffffcb00, index=0, other=...)
    at /home/minhle/scratch/proref/OxLM-2017-10-09/src/third_party/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h:121
#8  0x00002aaaabf7ff5f in Eigen::internal::assign_impl<Eigen::SelfCwiseBinaryOp<Eigen::internal::scalar_sum_op<float>, Eigen::Matrix<float, -1, 1, 0, -1, 1>, Eigen::DiagonalProduct<Eigen::Block<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const, -1, 1, true>, Eigen::DiagonalWrapper<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const>, 1> >, Eigen::DiagonalProduct<Eigen::Block<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > ---Type <return> to continue, or q <return> to quit---
const, -1, 1, true>, Eigen::DiagonalWrapper<Eigen::Map<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const>, 1>, 3, 0, 0>::run (dst=..., src=...)
    at /home/minhle/scratch/proref/OxLM-2017-10-09/src/third_party/eigen/Eigen/src/Core/Assign.h:410

The pointer appears in frames 1-3 as this and in frames 4-7 as this->m_data before we stop tracking.

We fixed it by inserting these commands at line 4 of src/CMakeLists.txt

add_definitions(-DEIGEN_DONT_VECTORIZE=1)
add_definitions(-DEIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT=1)