pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

x11/qt4-libs fails to build on NetBSD sparc64

Hi, I need help from C++ experts. I'm using NetBSD sparc64 (64-bit kernel + 
userland) on Ultra 10. I'm trying to build kde4 from pkgsrc wip.

The first problem I have is building x11/qt4-libs, it fails to build with the 
following error message:

qstyle styles/qstyle.qrc -o .rcc/release-shared/qrc_qstyle.cpp
gmake[1]: *** [.rcc/release-shared/qrc_qstyle.cpp] Bus error (core dumped)
gmake[1]: Leaving directory 
gmake: *** [sub-gui-sub_src_target_ordered] Error 2
*** Error code 2

make: stopped in /opt/pkgsrc/x11/qt4-libs
*** Error code 1

So, looking above, it runs rcc binary on a .cpp file, the binary causes 'Bus 
error' and dumps core. This looks like a 64-bit issue, i.e. accessing 
misaligned memory address.

Running gdb on the core file gives:

Core was generated by `rcc'.
Program terminated with signal 10, Bus error.
#0  0x000000000019db08 in QVector<QXmlSimpleReaderPrivate::XmlRef>::operator= 
    this=0x41032828, v=<value optimized out>)
    at ../../../include/QtCore/../../src/corelib/tools/qvector.h:355
355         if (!d->sharable)

Looking at src/corelib/tools/qvector.h line 355 there is the following 

template <typename T>
QVector<T> &QVector<T>::operator=(const QVector<T> &v)
    typename QVector::Data *x = v.d;
    x = qAtomicSetPtr(&d, x);
    if (!x->ref.deref())
    if (!d->sharable)
    return *this;

I'm not sure how the line 'if (!d->sharable)' can cause 'Bus error'. Any 
ideas? Where does symbol 'd' come from? It's not declared as variable or 

Home | Main Index | Thread Index | Old Index