Details
-
Bug
-
Resolution: Out of scope
-
P4: Low
-
None
-
5.13.0, 5.13.2, 5.15.16, 6.2.10, 6.5.3, 6.6.0
-
Windows 11, Windows 10 22H2
-
e696bec76 (dev), 60d60dba7 (6.7), 06618fbeb (6.6), b7792d9b8 (tqtc/lts-6.5)
-
Foundations Sprint 97, Foundations Sprint 98, Foundations Sprint 99, Foundation Sprint 100, Foundation Sprint 101, Foundations Sprint 102, Foundation Sprint 103, Foundation Sprint 104, Foundation Sprint 105, Foundation Sprint 106, Foundation Sprint 107
Description
Summary
// From resourcecrash.zip int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QString srcPath = ":/bad-file.rcc"; QString destPath = "bad-file-on-disk.rcc"; QString otherPath = ":/good-file.txt"; qDebug().noquote() << QString("Copying '%1' to '%2'").arg(srcPath, destPath); QFile::copy(srcPath, destPath); QFileInfo info(destPath); qDebug().noquote() << destPath << "exists?:" << info.exists() << QString("(%1 bytes)").arg(info.size()); bool registered = QResource::registerResource(destPath); qDebug().noquote() << destPath << "registered?:" << registered; QFile otherFile(otherPath); qDebug() << "Opening" << otherPath; if (otherFile.open(QIODevice::ReadOnly)) qDebug() << "Read data:" << otherFile.readAll(); else qDebug() << "Failed to open file"; }
Using Qt 5.12.12, the application does not register the bad file and everything runs fine:
Copying ':/bad-file.rcc' to 'bad-file-on-disk.rcc' bad-file-on-disk.rcc exists?: true (55876 bytes) bad-file-on-disk.rcc registered?: false Opening ":/good-file.txt" Read data: "Hello world!"
Using Qt 5.15.16 or 6.x, the application registers the bad file. Subsequent attempts to access the resource system will crash:
Copying ':/bad-file.rcc' to 'bad-file-on-disk.rcc' bad-file-on-disk.rcc exists?: true (55876 bytes) bad-file-on-disk.rcc registered?: true Opening ":/good-file.txt" ### CRASHES HERE
Original report (title: "QResourceRoot::hash crash")
A customer sent me a dmp: my application crashes when trying to load a js file. From the stack, it looks like there is an if that does not work properly.
I'm not really sure and unfortunately I cannot provide the file causing this issue. But I think that the if at line 735 (and 744) should be as follow:
if (node <= 0) // root return 0;
Attachments
Issue Links
- is duplicated by
-
QTBUG-120060 Do not crash after registering an invalid resource file
- Closed