On 30/08/13 09:06, Glenn Ramsey wrote:
On 29/08/13 20:33, Martin Zibricky wrote:
On Thursday 29 of August 2013 12:20:16 Glenn Ramsey wrote:
Hi,

When running the following test app on OSX (10.8.4, PyQt 5.1
snapshot + Qt
5.1)


https://github.com/pyinstaller/pyinstaller/blob/develop/tests/interactive/te
st_pyqt5_qml.py

I get a crash (stack trace below) when it is frozen but not when it is
not
frozen.

Can anyone suggest what might be causing this or how to diagnose
it further?

It looks like there might be a missing dylib or something related to
that. Try the following command on all .dylib/.so files that are bundled
with the test_pyqt5:

otool -L  foo.dylib

Or somehow let osx dynamic loader to show what .dylib files are
loaded.


That can be done by setting the env var DYLD_PRINT_LIBRARIES=1 but I don't think
that this is the problem.

Running it in the debugger [1] I can see that the issue is a bad pointer, but I
have no idea why it's like that. I'll keep looking.

* thread #5: tid = 0x2503, 0x0a6ce51d QtQml_debug`QScopedPointer<QObjectData,
QScopedPointerDeleter<QObjectData> >::data(this=0x00000004) const + 13 at
qscopedpointer.h:132, stop reason = EXC_BAD_ACCESS (code=2, address=0x4)
     frame #0: 0x0a6ce51d QtQml_debug`QScopedPointer<QObjectData,
QScopedPointerDeleter<QObjectData> >::data(this=0x00000004) const + 13 at
qscopedpointer.h:132
    129
    130         inline T *data() const
    131         {
-> 132             return d;
    133         }
    134
    135         inline bool isNull() const

Glenn

[1]
http://stackoverflow.com/questions/14746315/how-to-attach-to-child-process-in-lldb

It seems that the crash happens because in qqmldebugserver.cpp:273 qApp (which appears to be a macro for QCoreApplication::instance() ) is 0 and the following assert confirms this:

    QQmlDebugServer *QQmlDebugServer::instance()
    {
        static bool commandLineTested = false;

        if (!commandLineTested) {
            commandLineTested = true;

            Q_ASSERT(qApp); // assert fails
QCoreApplicationPrivate *appD = static_cast<QCoreApplicationPrivate*>(QObjectPrivate::get(qApp));

I suspect its a dll address space issue but I don't understand why QCoreApplication::instance() would be 0 in a frozen app and not in a non frozen one.

Glenn

--
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/pyinstaller.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to