Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fails to build on OpenBSD with qt 5.15 #119

Open
landryb opened this issue Feb 21, 2021 · 25 comments
Open

fails to build on OpenBSD with qt 5.15 #119

landryb opened this issue Feb 21, 2021 · 25 comments

Comments

@landryb
Copy link

landryb commented Feb 21, 2021

i guess since f7edcad the build fails on openbsd, just tried 2.1.0 (2.0.3 was failing at runtime after 5s it was crashing), build fails on all the calls to bindValue:

/usr/obj/ports/dustrac-2.1.0/DustRacing2D-2.1.0/src/game/database.cpp:134:11: error: no matching member function for call to 'bindValue'                                      
    query.bindValue(":version", TRACK_SET_VERSION);                                                                                                                           
    ~~~~~~^~~~~~~~~                                                                                                                                                           
/usr/local/include/X11/qt5/QtSql/qsqlquery.h:104:10: note: candidate function not viable: no known conversion from 'const int' to 'const QVariant' for 2nd argument           
    void bindValue(const QString& placeholder, const QVariant& val,                                                                                                           
         ^                                                                                                                                                                    
/usr/local/include/X11/qt5/QtSql/qsqlquery.h:106:10: note: candidate function not viable: no known conversion from 'const char [9]' to 'int' for 1st argument                 
    void bindValue(int pos, const QVariant& val, QSql::ParamType type = QSql::In);                                                                                            
         ^                                                                                                                                                                    
/usr/obj/ports/dustrac-2.1.0/DustRacing2D-2.1.0/src/game/database.cpp:135:11: error: no matching member function for call to 'bindValue'                                      
    query.bindValue(":track_name", track.trackData().name());                                                                                                                 
    ~~~~~~^~~~~~~~~                                                                                                                                                           
/usr/local/include/X11/qt5/QtSql/qsqlquery.h:104:10: note: candidate function not viable: no known conversion from 'QString' to 'const QVariant' for 2nd argument             
    void bindValue(const QString& placeholder, const QVariant& val,                                                                                                           
         ^                                                                                                                                                                    
/usr/local/include/X11/qt5/QtSql/qsqlquery.h:106:10: note: candidate function not viable: no known conversion from 'const char [12]' to 'int' for 1st argument                
    void bindValue(int pos, const QVariant& val, QSql::ParamType type = QSql::In);                                                                                            
         ^                                                                                                                                                                    
/usr/obj/ports/dustrac-2.1.0/DustRacing2D-2.1.0/src/game/database.cpp:148:15: error: no matching member function for call to 'bindValue'                                      
        query.bindValue(":version", TRACK_SET_VERSION);                                                                                                                       
        ~~~~~~^~~~~~~~~                                                                                                                                                       
/usr/local/include/X11/qt5/QtSql/qsqlquery.h:104:10: note: candidate function not viable: no known conversion from 'const int' to 'const QVariant' for 2nd argument           
    void bindValue(const QString& placeholder, const QVariant& val,                                                                                                           
         ^                                                                                                                                                                    
/usr/local/include/X11/qt5/QtSql/qsqlquery.h:106:10: note: candidate function not viable: no known conversion from 'const char [9]' to 'int' for 1st argument                 
    void bindValue(int pos, const QVariant& val, QSql::ParamType type = QSql::In);                                                                                            
         ^                                                                                                                                                                    
/usr/obj/ports/dustrac-2.1.0/DustRacing2D-2.1.0/src/game/database.cpp:149:15: error: no matching member function for call to 'bindValue'                                      
        query.bindValue(":track_name", track.trackData().name());  
@juzzlin
Copy link
Owner

juzzlin commented Feb 21, 2021

Is this the current master? I remember I have already fixed a similar issue by adding #include <QVariant> to database.cpp. I can build against Qt 5.15.2 but that's on Ubuntu.

@landryb
Copy link
Author

landryb commented Feb 22, 2021

that was with 2.1.0, not master. I see QVariant was added in 8af0bfe but now that i see 2.1.1 was released will recheck with this new version.

@juzzlin
Copy link
Owner

juzzlin commented Feb 22, 2021

Yes please do as that fix was not included in 2.1.0 :)

@landryb
Copy link
Author

landryb commented Feb 22, 2021

2.1.1 builds fine on OpenBSD (and yes we build with -DQOpenGLFunctions=OFF, i dont fully remember why exactly though), but segfaults when trying to start a game.. that's probably the same failure i was seeing with 2.0.3, and explains why we still only package 1.13.0.

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00000207fb18df0f in MCObject::index() const ()
[Current thread is 1 (process 289236)]
(gdb) bt
#0  0x00000207fb18df0f in MCObject::index() const ()
#1  0x00000207fb1955f3 in MCWorld::removeObjectNow(MCObject&) ()
#2  0x00000207fb18eae9 in MCObject::Impl::removeFromWorldNow() ()
#3  0x00000207fb18fc4f in MCObject::Impl::~Impl() ()
#4  0x00000207fb18e33f in MCObject::~MCObject() ()
#5  0x00000207fb194884 in MCWorld::setDimensions(float, float, float, float, float, float, float, bool, unsigned long) ()
#6  0x00000207fb1320da in Scene::setActiveTrack(std::__1::shared_ptr<Track>) ()
#7  0x00000207fb17a06a in TrackSelectionMenu::selectCurrentItem() ()
#8  0x00000207fb1101ae in EventHandler::handleMenuKeyPressEvent(QKeyEvent*) ()
#9  0x00000207fb12b960 in Renderer::keyPressEvent(QKeyEvent*) ()
#10 0x0000020a01f3c11f in QWindow::event(QEvent*) () from /usr/local/lib/qt5/./libQt5Gui.so.3.0
#11 0x0000020a527b4db6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/local/lib/qt5/./libQt5Widgets.so.3.0
#12 0x0000020a527b6af1 in QApplication::notify(QObject*, QEvent*) () from /usr/local/lib/qt5/./libQt5Widgets.so.3.0
#13 0x00000207fb0fb9da in Application::notify(QObject*, QEvent*) ()
#14 0x0000020a57a761f5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#15 0x0000020a57a76fc9 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#16 0x0000020a01f2130a in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) () from /usr/local/lib/qt5/./libQt5Gui.so.3.0
#17 0x0000020a01f1fb81 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/local/lib/qt5/./libQt5Gui.so.3.0
#18 0x0000020a01ef1f7a in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/./libQt5Gui.so.3.0
#19 0x0000020a2ee848dd in xcbSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/local/lib/qt5/libQt5XcbQpa.so.0.0
#20 0x0000020aa357e80f in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.4201.5
#21 0x0000020aa357ebd0 in g_main_context_iterate () from /usr/local/lib/libglib-2.0.so.4201.5
#22 0x0000020aa357ecb5 in g_main_context_iteration () from /usr/local/lib/libglib-2.0.so.4201.5
#23 0x0000020a57b5057b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#24 0x0000020a2ee84a70 in QXcbGlibEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/libQt5XcbQpa.so.0.0
#25 0x0000020a57a71183 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#26 0x0000020a57a713d6 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#27 0x0000020a57a76c07 in QCoreApplication::exec() () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#28 0x0000020a01f1f294 in QGuiApplication::exec() () from /usr/local/lib/qt5/./libQt5Gui.so.3.0
#29 0x0000020a527b63e7 in QApplication::exec() () from /usr/local/lib/qt5/./libQt5Widgets.so.3.0
#30 0x00000207fb119f7f in main ()

@juzzlin
Copy link
Owner

juzzlin commented Feb 22, 2021

Seems to crash when destroying and removing a game object (I suspect it's the area wall).

What do you do when it crashes? You just start the game, select a track and it crashes?

@landryb
Copy link
Author

landryb commented Feb 22, 2021

yes, it crashes just after selecting a track

@juzzlin
Copy link
Owner

juzzlin commented Feb 22, 2021

Could you run ctest after build?

Should look like this:

`
$ ctest
Start 1: MCForceRegistryTest
1/5 Test #1: MCForceRegistryTest .............. Passed 0.03 sec
Start 2: MCObjectTest
2/5 Test #2: MCObjectTest ..................... Passed 0.10 sec
Start 3: MCMeshLoaderTest
3/5 Test #3: MCMeshLoaderTest ................. Passed 0.00 sec
Start 4: MCWorldTest
4/5 Test #4: MCWorldTest ...................... Passed 0.05 sec
Start 5: gearboxtest
5/5 Test #5: gearboxtest ...................... Passed 0.00 sec

100% tests passed, 0 tests failed out of 5

Total Test time (real) = 0.19 sec
`

@landryb
Copy link
Author

landryb commented Feb 22, 2021

looks.. pretty bad here:

Test project /usr/obj/ports/dustrac-2.1.1/build-amd64
    Start 1: MCForceRegistryTest
1/5 Test #1: MCForceRegistryTest ..............Subprocess aborted***Exception:   1.06 sec
    Start 2: MCObjectTest
2/5 Test #2: MCObjectTest .....................Subprocess aborted***Exception:   0.23 sec
    Start 3: MCMeshLoaderTest
3/5 Test #3: MCMeshLoaderTest .................   Passed    0.19 sec
    Start 4: MCWorldTest
4/5 Test #4: MCWorldTest ......................Subprocess aborted***Exception:   0.22 sec
    Start 5: gearboxtest
5/5 Test #5: gearboxtest ......................   Passed    0.03 sec

40% tests passed, 3 tests failed out of 5

Total Test time (real) =   1.83 sec

The following tests FAILED:
          1 - MCForceRegistryTest (Subprocess aborted)
          2 - MCObjectTest (Subprocess aborted)
          4 - MCWorldTest (Subprocess aborted)

@juzzlin
Copy link
Owner

juzzlin commented Feb 22, 2021

Try ctest --extra-verbose to get some explanation.

@landryb
Copy link
Author

landryb commented Feb 22, 2021

only the failing ones:

1: Test command: /usr/obj/ports/dustrac-2.1.1/DustRacing2D-2.1.1/unittests/MCForceRegistryTest                                                                                                                                                 
1: Test timeout computed to be: 10000000                                                                                                                                                                                                       
1: ********* Start testing of MCForceRegistryTest *********                                                                                                                                                                                    
1: Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by Clang 10.0.1 ), unknown unknown                                                                                                
1: PASS   : MCForceRegistryTest::initTestCase()                                                                                                                                                                                                
1: PASS   : MCForceRegistryTest::testAddUpdateRemove()                                                                                                                                                                                         
1: QFATAL : MCForceRegistryTest::testAddUpdateRemoveMulti() Received signal 11                                                                                                                                                                 
1:          Function time: 27ms Total time: 66ms                                                                                                                                                                                               
1: FAIL!  : MCForceRegistryTest::testAddUpdateRemoveMulti() Received a fatal error.                                                                                                                                                            
1:    Loc: [Unknown file(0)]                                                                                                                                                                                                                   
1: Totals: 2 passed, 1 failed, 0 skipped, 0 blacklisted, 67ms                                                                                                                                                                                  
1: ********* Finished testing of MCForceRegistryTest *********                                                                                                                                                                                 
1/5 Test #1: MCForceRegistryTest ..............Subprocess aborted***Exception:   0.14 sec       

2: Test command: /usr/obj/ports/dustrac-2.1.1/DustRacing2D-2.1.1/unittests/MCObjectTest                                                                                                                                                        
2: Test timeout computed to be: 10000000                                                                                                                                                                                                       
2: ********* Start testing of MCObjectTest *********                                                                                                                                                                                           
2: Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by Clang 10.0.1 ), unknown unknown                                                                                                
2: PASS   : MCObjectTest::initTestCase()                                                                                                                                                                                                       
2: QFATAL : MCObjectTest::testAddChildren() Received signal 11                                                                                                                                                                                 
2:          Function time: 29ms Total time: 33ms                                                                                                                                                                                               
2: FAIL!  : MCObjectTest::testAddChildren() Received a fatal error.
2:    Loc: [Unknown file(0)]
2: Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted, 34ms
2: ********* Finished testing of MCObjectTest *********
2/5 Test #2: MCObjectTest .....................Subprocess aborted***Exception:   0.15 sec

4: Test command: /usr/obj/ports/dustrac-2.1.1/DustRacing2D-2.1.1/unittests/MCWorldTest
4: Test timeout computed to be: 10000000
4: ********* Start testing of MCWorldTest *********
4: Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by Clang 10.0.1 ), unknown unknown
4: PASS   : MCWorldTest::initTestCase()
4: QFATAL : MCWorldTest::testAddToWorld() Received signal 11
4:          Function time: 29ms Total time: 33ms
4: FAIL!  : MCWorldTest::testAddToWorld() Received a fatal error.
4:    Loc: [Unknown file(0)]
4: Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted, 34ms
4: ********* Finished testing of MCWorldTest *********
4/5 Test #4: MCWorldTest ......................Subprocess aborted***Exception:   0.17 sec

and within gdb:

Reading symbols from ../DustRacing2D-2.1.1/unittests/MCObjectTest...(no debugging symbols found)...done.
(gdb) r
Starting program: /usr/obj/ports/dustrac-2.1.1/DustRacing2D-2.1.1/unittests/MCObjectTest 
********* Start testing of MCObjectTest *********
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by Clang 10.0.1 ), unknown unknown
PASS   : MCObjectTest::initTestCase()
[New thread 208654]

Thread 1 received signal SIGSEGV, Segmentation fault.
0x0000071c610e6e4f in MCObject::index() const ()
(gdb) bt
#0  0x0000071c610e6e4f in MCObject::index() const ()
#1  0x0000071c610ecaa3 in MCWorld::removeObjectNow(MCObject&) ()
#2  0x0000071c610e7a29 in MCObject::Impl::removeFromWorldNow() ()
#3  0x0000071c610e8f9f in MCObject::Impl::~Impl() ()
#4  0x0000071c610e7227 in MCObject::~MCObject() ()
#5  0x0000071c610e0000 in MCObjectTest::testAddChildren() ()
#6  0x0000071eb280b0a7 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#7  0x0000071ef8e6b444 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const () from /usr/local/lib/qt5/./libQt5Test.so.3.0
#8  0x0000071ef8e61c31 in QTest::TestMethods::invokeTestOnData(int) const () from /usr/local/lib/qt5/./libQt5Test.so.3.0
#9  0x0000071ef8e62c82 in QTest::TestMethods::invokeTest(int, char const*, QTest::WatchDog*) const () from /usr/local/lib/qt5/./libQt5Test.so.3.0
#10 0x0000071ef8e64800 in QTest::TestMethods::invokeTests(QObject*) const () from /usr/local/lib/qt5/./libQt5Test.so.3.0
#11 0x0000071ef8e6516b in QTest::qRun() () from /usr/local/lib/qt5/./libQt5Test.so.3.0
#12 0x0000071ef8e64be5 in QTest::qExec(QObject*, int, char**) () from /usr/local/lib/qt5/./libQt5Test.so.3.0
#13 0x0000071c610e5370 in main ()

note that OpenBSD has a somewhat aggressive memory management, so if you reuse some freed memory you fail hard/etc..

@juzzlin
Copy link
Owner

juzzlin commented Feb 22, 2021

For some reason the destruction sequence of MCObject makes it go crazy. I just don't understand why. The funny thing is that deletion only happens once so there shouldn't be any reuse of freed memory.

@juzzlin
Copy link
Owner

juzzlin commented Feb 22, 2021

I tried to run the tests under valgrind and it reported:

==3389208== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

@landryb
Copy link
Author

landryb commented Feb 22, 2021

@juzzlin
Copy link
Owner

juzzlin commented Feb 22, 2021

Could you try the current dev branch (ae380b8) ?

@landryb
Copy link
Author

landryb commented Feb 22, 2021

looks definitely helpful, with that commit backported on top of 2.1.1, the test succeeds:

Reading symbols from unittests/MCWorldTest...(no debugging symbols found)...done.
(gdb) r
Starting program: /usr/obj/ports/dustrac-2.1.1/DustRacing2D-2.1.1/unittests/MCWorldTest 
********* Start testing of MCWorldTest *********
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by Clang 10.0.1 ), unknown unknown
PASS   : MCWorldTest::initTestCase()
PASS   : MCWorldTest::testAddToWorld()
PASS   : MCWorldTest::testCollisionEvent_RectRect()
PASS   : MCWorldTest::testCollisionEvent_RectCircle()
PASS   : MCWorldTest::testCollisionEvent_CircleCircle()
PASS   : MCWorldTest::testInstance()
PASS   : MCWorldTest::testSetDimensions()
PASS   : MCWorldTest::testSleepingObjectRemovalFromIntegration()
PASS   : MCWorldTest::cleanupTestCase()
Totals: 9 passed, 0 failed, 0 skipped, 0 blacklisted, 272ms
********* Finished testing of MCWorldTest *********
[Inferior 1 (process 79085) exited normally]

i can start a game, the map & cars are displayed, there's the countdown, but when the countdown reaches zero there's another (different) segfault - i think that matches the failure i was seeing with 2.0.3:

#0  0x0000058b101d958b in MCObject::isPhysicsObject() const ()
[Current thread is 1 (process 525286)]
(gdb) bt
#0  0x0000058b101d958b in MCObject::isPhysicsObject() const ()
#1  0x0000058b101e12a5 in MCWorld::integrate(int) ()
#2  0x0000058b101e1edc in MCWorld::stepTime(int) ()
#3  0x0000058b1017d399 in Scene::updateFrame(InputHandler&, int) ()
#4  0x0000058b10163110 in QtPrivate::QFunctorSlotObject<Game::Game(int&, char**)::$_3, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) ()
#5  0x0000058d11b43e51 in QtPrivate::QSlotObjectBase::call(QObject*, void**) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#6  0x0000058d11ba5741 in void doActivate<false>(QObject*, int, void**) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#7  0x0000058d11b9d0e1 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#8  0x0000058d11bb644f in QTimer::timeout(QTimer::QPrivateSignal) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#9  0x0000058d11bb63e3 in QTimer::timerEvent(QTimerEvent*) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#10 0x0000058d11b9529e in QObject::event(QEvent*) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#11 0x0000058dafabddb6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/local/lib/qt5/./libQt5Widgets.so.3.0
#12 0x0000058dafabfaf1 in QApplication::notify(QObject*, QEvent*) () from /usr/local/lib/qt5/./libQt5Widgets.so.3.0
#13 0x0000058b1014793a in Application::notify(QObject*, QEvent*) ()
#14 0x0000058d11b2c1f5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#15 0x0000058d11b2cf55 in QCoreApplication::sendEvent(QObject*, QEvent*) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#16 0x0000058d11c04125 in QTimerInfoList::activateTimers() () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#17 0x0000058d11c074fe in timerSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#18 0x0000058d11c07896 in idleTimerSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#19 0x0000058d39db480f in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.4201.5
#20 0x0000058d39db4bd0 in g_main_context_iterate () from /usr/local/lib/libglib-2.0.so.4201.5
#21 0x0000058d39db4cb5 in g_main_context_iteration () from /usr/local/lib/libglib-2.0.so.4201.5
#22 0x0000058d11c0657b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#23 0x0000058dd9438a70 in QXcbGlibEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/libQt5XcbQpa.so.0.0
#24 0x0000058d11b27183 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#25 0x0000058d11b273d6 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#26 0x0000058d11b2cc07 in QCoreApplication::exec() () from /usr/local/lib/qt5/./libQt5Core.so.3.0
#27 0x0000058dc0e19294 in QGuiApplication::exec() () from /usr/local/lib/qt5/./libQt5Gui.so.3.0
#28 0x0000058dafabf3e7 in QApplication::exec() () from /usr/local/lib/qt5/./libQt5Widgets.so.3.0
#29 0x0000058b10165edf in main ()

@juzzlin
Copy link
Owner

juzzlin commented Feb 22, 2021

Cool! :)

That another problem seems to be even trickier as there's no deletion involved, but still some a corrupted object, I guess. Would be useful to add some debug prints to MCWorld::integrate() perhaps and print the name of the objects it tries to operate on.

@landryb
Copy link
Author

landryb commented Feb 22, 2021

sure, can try that if you tell me what to add where :) i have zero knowledge in dustrac code / classes :)

@juzzlin
Copy link
Owner

juzzlin commented Feb 22, 2021

I added some debug prints to bsd branch (61985b9). Let's see what this reveals.

@landryb
Copy link
Author

landryb commented Feb 22, 2021

dustrac.log.gz

it integrated ... many things, before blowing (19Mb log)

@juzzlin
Copy link
Owner

juzzlin commented Feb 22, 2021

But it eventually crashed? Hmm...I thought that it would crash immediately...damn...

@juzzlin
Copy link
Owner

juzzlin commented Feb 22, 2021

Would it be possible for you to git bisect the first commit that causes this?

@landryb
Copy link
Author

landryb commented Feb 23, 2021

that will be .. painful to say the least. Is it supposed to loop so many times on this method ? i saw 'start integration' 270 times in the log before the crash. i thought it was related to the end of the countdown as soon as vehicles start moving...

@juzzlin
Copy link
Owner

juzzlin commented Feb 24, 2021

What I meant was to just use git bisect to find out the first breaking commit somewhere near the version 2.0.3. - without any debug prints. Just find out the first commit that crashes when the game is started. Git bisect works so that first you identify some known working commit in the past and then some known failing commit. After each step you'd build and run and mark the current commit good or bad. This process is logarithmic so even if there are hundreds of commits it won't take that many steps to complete. Very cool! :)

@juzzlin
Copy link
Owner

juzzlin commented Feb 24, 2021

Btw, is it possible to run OpenBSD in VirtualBox on Ubuntu so that I could test this?

@landryb
Copy link
Author

landryb commented Feb 24, 2021

i know git bisect, it will just take me some time to setup an env where i'd build from git that's all. Lots of things (for cmake) are setupped by the ports infrastructure..

and yeah, ofc you can run OpenBSD in Virtualbox (or KVM) with X, you'll probably just need to install cmake/openal via the packages.

then,

git clone
mkdir build
cd build
CMAKE_PREFIX_PATH=/usr/local/lib/qt5/cmake cmake .. -DReleaseBuild=ON -DQOpenGLFunctions=OFF
make

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants