Incorrect checking for error return code of posix_fallocate() causes function to think that everything is OK, while it is not, causing crash in some cases.
BUG: 400610
CCBUG: 339829
dfaure | |
mpyne |
Frameworks |
Incorrect checking for error return code of posix_fallocate() causes function to think that everything is OK, while it is not, causing crash in some cases.
BUG: 400610
CCBUG: 339829
good test plan provided in https://bugs.kde.org/show_bug.cgi?id=400610 . Works like a charm, tested in KDE Neon dev-ustable
The reason for bug was that return value of posix_fallocate() was assumed to be negative on error, but in fact it is a positive integer. The check was < 0, whi should be != 0. ( http://man7.org/linux/man-pages/man3/posix_fallocate.3.html )
With this fix applied test application does not crash, and the output in console widow is:
No space left on device. Check filesystem free space at your XDG_CACHE_HOME! The operating system is unable to promise 10547304 bytes for mapped cache, abandoning the cache for crash-safety. org.kde.kcoreaddons: Failed to establish shared memory mapping, will fallback to private memory -- memory usage will increase
Automatic diff as part of commit; lint not applicable. |
Automatic diff as part of commit; unit tests not applicable. |
Did you mean a block with if (result == ENOSPC) { ? Strictly speaking this whole block is not necessary, but it can provide some useful info in console.
Or do you suggest adding switch with all error return codes from http://man7.org/linux/man-pages/man3/posix_fallocate.3.html? π