Hi everybody,

I would like to help the PySide project and at this moment the port to
Windows seems interesting, useful and not that hard.

Following Hugo's mail I installed everything the needed stuff and,
using VS 2008, I built libxml2 and libxslt, built ApiExtractor.

When I run the test suite for the Release configuration of
ApiExtractor (HEAD of master branch) I get 4 tests failing:
The following tests FAILED:
  11 - testmodifyfunction (SEGFAULT)
  13 - testrefcounttag (SEGFAULT)
  14 - testreferencetopointer (SEGFAULT)
  16 - testreverseoperators (SEGFAULT)

I would try to look into why the tests are crashing but it seems that
QTestLib is eating the crashes so I can't drop in the debugger to
investigate. I tried running just testmodifyfunction.exe manually and
I only get:
********* Start testing of TestModifyFunction *********
Config: Using QTest library 4.6.2, Qt 4.6.2
PASS   : TestModifyFunction::initTestCase()
No crash but premature ending.

I also tried to modify one of the test cases to force a crash by
adding something like:
int* i = 0;
*i = 42;
Even so, I don't see any crash when running that test.

So I looked into why is QTestLib eating crashes. In
C:\Qt\4.6.2\src\testlib\qtestcase.cpp I see:
#ifndef QT_NO_EXCEPTIONS
     } catch (...) {
         do internal Qt stuff
         // Rethrow exception to make debugging easier.
         throw;
         return 1;
     }
#  endif

Seeing this I thought that catch (...) is eating all C++ exceptions
AND other stuff like access violations. And that this happens because
ApiExtractor is compiled without /EHsc. The code above does rethrow
but I have no idea what happens to the rethrown exception if /EHsc- is
used.

But I did some testing, and it seems /EHsc doesn't influence things in
this particular situation:

1. If I use /EHsc (instead of /EHsc-) in CMakeLists.txt I get the same
4 tests failing. No difference.

2. If I use /DQT_NO_EXCEPTIONS in CMakeLists.txt I get just 1 test failing:
The following tests FAILED:
  11 - testmodifyfunction (SEGFAULT)

3. If I use /EHsc and /DQT_NO_EXCEPTIONS in CMakeLists.txt I get the
same 1 test failing.

The failure of the 1 test is still silent so something is still eating
this crash.

Given all this:
1. does anybody know whether the precompiled Qt for VS2008 is compiled
with QT_NO_EXCEPTIONS defined or not?

2. why is apiextractor explicitly using /EHsc- to disable exceptions
since they seem to be used by Qt (at least if QT_NO_EXCEPTIONS is not
defined) ? I see /EHsc- was added in commit 4908d with message: "Fixes
flags used with msvc"

3. do you have any other ideas regarding how to tell QTestLib to stop
eating exceptions and crashes so that I can debug them?

Sorry for the very long mail but I wanted to explain everything I tried so far.

Catalin
_______________________________________________
PySide mailing list
[email protected]
http://lists.openbossa.org/listinfo/pyside

Reply via email to