Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Paul Smedley

Pages: [1] 2 3 ... 158
1
Programming / Re: Qt6 Application Testing
« on: Today at 09:00:05 am »
OK... took a little longer than expected, and still a bit hacky (I reverted https://github.com/psmedley/qt6-base-os2/blob/6.8.x/src/gui/text/unix/qfontconfigdatabase.cpp to the Qt 6.6.x version to avoid a crash) and building qtdeclarative is a PITA with the previously reported SIGABRT.. but....

https://smedley.id.au/tmp/qt6-6.8.1-os2-20250115.zip is now available. I've only tried a couple of the examples, and I haven't tried dooble with this (by copying over the Qt 6.2.x components).

YMMV

2
Programming / Re: Qt6 Development
« on: January 12, 2025, 02:37:20 am »
OK, that got me further, but then cmake install doesn't complete due to missing targets.

Attached is a trap from a debug qmlcachegen

This helped.... it showed the free() call which is troubling libc came from:
Code: [Select]
0013F468  1CD8CF17   QT6QMLCO  0001:000ACF17  qhash.h#1524 __ZN6QQmlJS15ContextualTypesD1Ev$w$lTwuLaOHst85hU6b4 + 87 0001:000ACE90 (U:\dev\qt6-declarative-os2-6.8.x\src\qmlcompiler\qqmljsimporter.cpp)

Looking at qhash.h#1524: ie https://github.com/psmedley/qt6-base-os2/blob/6.8.x/src/corelib/tools/qhash.h#L1524
it has:
Code: [Select]
1523:        if (d && !d->ref.deref())
1524:            delete d;

For the purposes of getting qtdeclarative built - I've just commented these two lines - will see if it completes!

Of course, I have no idea why this is problematic or how to 'correctly' fix it.

3
Programming / Re: Qt6 Development
« on: January 11, 2025, 06:28:11 am »
For now, I'm just ignoring the error and telling ninja to keep compiling - will see how far it gets....

4
Programming / Re: Qt6 Development
« on: January 11, 2025, 01:00:51 am »
OK, moving the porting of Qt 6.8.x back to the development thread...

New problem building qtdeclarative 6.8.1:
Code: [Select]
FAILED: src/quickcontrols/fusion/.rcc/qmlcache/QuickControls2Fusion_DelayButton_qml.cpp src/quickcontrols/fusion/.rcc/qmlcache/QuickControls2Fusion_DelayButton_qml.cpp.aotstats U:/dev/qt6-declarative-os2-6.8.x/build/src/quickcontrols/fusion/.rcc/qmlcache/QuickControls2Fusion_DelayButton_qml.cpp U:/dev/qt6-declarative-os2-6.8.x/build/src/quickcontrols/fusion/.rcc/qmlcache/QuickControls2Fusion_DelayButton_qml.cpp.aotstats
cd U:/dev/qt6-declarative-os2-6.8.x/build/src/quickcontrols/fusion && C:/usr/bin/cmake.exe -E make_directory U:/dev/qt6-declarative-os2-6.8.x/build/src/quickcontrols/fusion/.rcc/qmlcache && U:/dev/qt6-declarative-os2-6.8.x/build/bin/qmlcachegen.exe --bare --resource-path /qt-project.org/imports/QtQuick/Controls/Fusion/DelayButton.qml -I U:/dev/qt6-declarative-os2-6.8.x/build/qml/ -I U:/dev/qt6-declarative-os2-6.8.x/build/qml -i U:/dev/qt6-declarative-os2-6.8.x/build/qml/QtQuick/Controls/Fusion/qmldir --resource U:/dev/qt6-declarative-os2-6.8.x/build/src/quickcontrols/fusion/.qt/rcc/qmake_QtQuick_Controls_Fusion.qrc --resource U:/dev/qt6-declarative-os2-6.8.x/build/src/quickcontrols/fusion/.qt/rcc/QuickControls2Fusion_raw_qml_0.qrc --resource U:/dev/qt6-declarative-os2-6.8.x/build/src/quickcontrols/fusion/.qt/rcc/qtquickcontrols2fusionstyle.qrc --dump-aot-stats "--module-id=QtQuick.Controls.Fusion(QuickControls2Fusion)" -o U:/dev/qt6-declarative-os2-6.8.x/build/src/quickcontrols/fusion/.rcc/qmlcache/QuickControls2Fusion_DelayButton_qml.cpp U:/dev/qt6-declarative-os2-6.8.x/src/quickcontrols/fusion/DelayButton.qml
Assertion failed: _UM_CRUMB_STATUS (crumb) == _UMS_FREE, file ./libc-0.1.13/src/emx/src/lib/malloc/ifree.c, line 30

The full output (including stderr is):
Code: [Select]
Assertion failed: _UM_CRUMB_STATUS (crumb) == _UMS_FREE, file ./libc-0.1.13/src/emx/src/lib/malloc/ifree.c, line 30

Killed by SIGABRT
pid=0x029b ppid=0x029a tid=0x0001 slot=0x008d pri=0x0200 mc=0x0001 ps=0x0010
U:\DEV\QT6-DECLARATIVE-OS2-6.8.X\BUILD\BIN\QMLCACHEGEN.EXE
Creating 029B_01.TRP
Moved 029b_01.TRP to C:\var\log\app\678247e1-029b_01-QMLCACHEGEN-exceptq.txt

_fmutex operation failed:  LIBC Heap request
 
Killed by SIGABRT
pid=0x029b ppid=0x029a tid=0x0001 slot=0x008d pri=0x0200 mc=0x0002 ps=0x0017
U:\DEV\QT6-DECLARATIVE-OS2-6.8.X\BUILD\BIN\QMLCACHEGEN.EXE
Creating 029B_01.TRP
Failed to move 029b_01.TRP to C:\var\log\app\678247e1-029b_01-QMLCACHEGEN-exceptq.txt
Abort trap

Trap attached (FWIW)

5
Programming / Re: Qt6 Application Testing
« on: January 10, 2025, 07:47:25 am »
OK, https://github.com/psmedley/qt6-base-os2/commit/ee029c7866a242ef8d8cbb1e6c7d393b9ef7d6ab fixes the issue with filepaths. Not really sure why this was required in 6.8.x but not earlier...

Edit: qtdeclarative from 6.8.x has got a LOT further now, and hasn't deleted any files in the root directory of my c: :)

6
Programming / Re: Qt6 Development
« on: January 10, 2025, 07:09:27 am »
For interest only...

Most recent builds have been done using a Lenovo M710q - Intel 6th gen processor. Newer hardware generally has limitations around the amount of free memory that OS/2 sees.

I recently imaged the SSD in this box, and converted it to a Virtualbox VDI. Yesterday, I installed this VDI onto a cheap box I got recently from Amazon - https://www.amazon.com.au/gp/product/B0CPY5M4S3 (I paid $A292 for it) which is running an Intel 12th Gen i5-12450H processor and 16GB RAM. I replaced the crappy SSD included with a 1TB version.

Running some testing with qt6-base-os2 and examples on:

Lenovo M710q - 1h51m
Beelink SEi12 (2 cores) - 1h43m
Beelink SEi12 (4 cores) - 1h13m

So with 4 cores, some pretty decent time saving waiting for builds to finish. I might see if I can get further improvements beyond 4 cores :)

Things have been quiet on the Qt front for me, I'm stuck in terms of ideas on how to proceed in stabilising the beast.

OK CPU in the M710Q (I made a mistake earlier and yout it was an M73p) has been changed from a 6th gen i5-6500T to an i7-7700T.

Compilation time of qtbase is now 1h02m!

7
Programming / Re: Qt6 Application Testing
« on: January 10, 2025, 05:16:30 am »
Thanks KO - I'm clearly overthinking this, howeer, I tried your solution, and it doesn't seem it's the problem for removerecursively....

Somehow, the following is happening.... but I cna't work out where...
Code: [Select]
QDEBUG : tst_QTemporaryDir::construction() filepath "C:/var/temp/tst_qtemporarydir-kVWTdl\\."
QDEBUG : tst_QTemporaryDir::construction() removeRecursively dirPath = "C:/var/temp/tst_qtemporarydir-kVWTdl/."
QDEBUG : tst_QTemporaryDir::construction() filepath "C:/var/temp/tst_qtemporarydir-kVWTdl/.\\."
QDEBUG : tst_QTemporaryDir::construction() removeRecursively dirPath = "C:/var/temp/tst_qtemporarydir-kVWTdl/./."
QDEBUG : tst_QTemporaryDir::construction() filepath "C:/var/temp/tst_qtemporarydir-kVWTdl/./.\\."
QDEBUG : tst_QTemporaryDir::construction() removeRecursively dirPath = "C:/var/temp/tst_qtemporarydir-kVWTdl/././."
QDEBUG : tst_QTemporaryDir::construction() filepath "C:/var/temp/tst_qtemporarydir-kVWTdl/././.\\."
QDEBUG : tst_QTemporaryDir::construction() removeRecursively dirPath = "C:/var/temp/tst_qtemporarydir-kVWTdl/./././."
QDEBUG : tst_QTemporaryDir::construction() filepath "C:/var/temp/tst_qtemporarydir-kVWTdl/./././.\\."
QDEBUG : tst_QTemporaryDir::construction() removeRecursively dirPath = "C:/var/temp/tst_qtemporarydir-kVWTdl/././././."
QDEBUG : tst_QTemporaryDir::construction() filepath "C:/var/temp/tst_qtemporarydir-kVWTdl/././././.\\."
QDEBUG : tst_QTemporaryDir::construction() removeRecursively dirPath = "C:/var/temp/tst_qtemporarydir-kVWTdl/./././././."
QDEBUG : tst_QTemporaryDir::construction() filepath "C:/var/temp/tst_qtemporarydir-kVWTdl/./././././.\\."
QDEBUG : tst_QTemporaryDir::construction() removeRecursively dirPath = "C:/var/temp/tst_qtemporarydir-kVWTdl/././././././."
QDEBUG : tst_QTemporaryDir::construction() filepath "C:/var/temp/tst_qtemporarydir-kVWTdl/././././././.\\."
QDEBUG : tst_QTemporaryDir::construction() removeRecursively dirPath = "C:/var/temp/tst_qtemporarydir-kVWTdl/./././././././."
QDEBUG : tst_QTemporaryDir::construction() filepath "C:/var/temp/tst_qtemporarydir-kVWTdl/./././././././.\\."

this is just a snip - eventually end up with some entries like:
Code: [Select]
"C:/var/temp/tst_qtemporarydir-kVWTdl/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././..\\.."
QDEBUG : tst_QTemporaryDir::construction() removeRecursively dirPath = "C:/var/temp/tst_qtemporarydir-kVWTdl/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././../.."
QDEBUG : tst_QTemporaryDir::construction() filepath "C:/var/temp/tst_qtemporarydir-kVWTdl/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././..\\.org.chromium.Chromium.4QbsiA"
Where we've gone up a directory from c:\var\temp and start removing files from c:. Driving me nuts as I can't seem to locate the code that's doing this.

Will have to try build a debug qt6core.dll and see if I can get the debugger to play nicely.

Edit: I *think* that what's supposed to be happening is that the '.' and '..' entries are supposed to be ignored, but they're not....

Yep... they're not:
Code: [Select]
QDEBUG : tst_QTemporaryDir::construction() removeRecursively dirPath = "C:/var/temp/tst_qtemporarydir-WuYeEF"
QDEBUG : tst_QTemporaryDir::construction() isDotorDotDot: "tst_qtemporarydir-WuYeEF\\."

I'm presuming that in theory, just the '.' should have bene passed to isDotorDotDot then it would have been skipped...

8
Programming / Re: Qt6 Application Testing
« on: January 10, 2025, 01:04:02 am »
OK I understand what's happening. Basically some code is appending \\ to the temp directory, then somehow this then becomes \.

I hacked the code and made the remove recursive code not remove anything, and am also testing in a VM. Out for breakfast now but will dig more when I get home.

9
Programming / Re: Qt6 Application Testing
« on: January 09, 2025, 10:25:47 pm »
Yeah that was a typo, I meant:
Code: [Select]
return fp.isEmpty() || (fp.at(1) != u':' && fp.at(2) != u'/')  || fp.at(0) != u'/';
Thanks for the catch tho, I just tested and it didn't change the behaviour of removeRecursively() now I see why (of course, this might not be the root cause....)

Edit: seems it's not the root cause...

10
Programming / Re: Qt6 Application Testing
« on: January 09, 2025, 07:37:47 pm »
well, for completeness, I guess it should be:
Code: [Select]
return fp.isEmpty() || (fp.at(1) != u':' && fp.at(1) != u'/')  || fp.at(0) != u'/'; ?

11
Programming / Re: Qt6 Application Testing
« on: January 09, 2025, 10:12:32 am »
I wonder how Windows avoids such a fate with QT6.7+? Since it uses drives too...

OK found 1st problem.

For OS/2, we use qfsfileengine_unix.cpp

In 6.2.x - https://github.com/psmedley/qt6-base-os2/blob/main/src/corelib/io/qfsfileengine_unix.cpp#L528
In 6.8.1 - https://github.com/psmedley/qt6-base-os2/blob/6.8.x/src/corelib/io/qfsfileengine_unix.cpp#L504

So I think in 6.8.1 we need this to be something more like:
Code: [Select]
bool QFSFileEngine::isRelativePath() const
{
    Q_D(const QFSFileEngine);
    const QString fp = d->fileEntry.filePath();
#ifndef Q_OS_OS2
    return fp.isEmpty() || fp.at(0) != u'/';
#else
    return fp.isEmpty() || (fp.at(1) != u':' && fp.at(1) != u'/');
#endif
}

12
Programming / Re: Qt6 Application Testing
« on: January 07, 2025, 09:12:21 pm »
was that a gag about my recent (well a month ago) injury???
<blush> I wasn't thinking of that at the time I typed and certainly didn't mean to make light of your injury... hope you are recovering well!

hahaahh all good :) Recovery is going well - back to the hospital tomorrow morning for an x-ray and hopefully pin removal :)

13
Programming / Re: Qt6 Application Testing
« on: January 07, 2025, 06:25:36 am »
OK, glad you're back on your feet. One thing about learning something the hard way (if you survive) is you don't quickly forget...

Hmmmm was that a gag about my recent (well a month ago) injury??? https://www.linkedin.com/posts/paulsmedleyau_i-wanted-to-share-the-below-in-the-hope-activity-7271285592322142208-DiUS :)

14
Programming / Re: Qt6 Application Testing
« on: January 07, 2025, 12:10:50 am »
I wonder how Windows avoids such a fate with QT6.7+? Since it uses drives too...

It'll be a case where I've missed a new #ifdef Q_OS_WIN which needs updating to #ifdef Q_OS_DOSLIKE so that OS/2 uses the same codepath.

I'll investigate later today - just happy I've kinda rebuilt things - just missing pre-compiled Qt 6.6, 6.7 and 6.8 for testing purposes (as in the build folders for each of the modules....

15
Programming / Re: Qt6 Application Testing
« on: January 06, 2025, 11:35:19 pm »
Wow... that's a wicked bug!

Yep! Let's just say that if I hadn't imaged the SSD a couple of weeks ago, that I'm not sure I could have beared rebuilding the AOS drive with the compiler, etc...

I have a couple of mitigations in mind - including moving the temp directory to a separate drive (ram disk?) and also getting the tests built so I can hopefully pickup where the bug is - I guess some API is returning a / or something which is then interpreted as being the root directory...  Could not believe it when the computer froze then the c:\ was empty......

I'll also do my next testing in a VM *after* backing up the image - easier to copy over an image then remove/reimage an SSD...

Pages: [1] 2 3 ... 158