Bug 2354310
| Summary: | Krusader cannot copying files from rpm | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Martin <namar66> | ||||
| Component: | krusader | Assignee: | Onuralp SEZER <thunderbirdtr> | ||||
| Status: | NEW --- | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
| Severity: | unspecified | Docs Contact: | |||||
| Priority: | unspecified | ||||||
| Version: | 42 | CC: | kde-sig, neil, thunderbirdtr | ||||
| Target Milestone: | --- | ||||||
| Target Release: | --- | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | --- | |||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | Type: | Bug | |||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Attachments: |
|
||||||
|
Description
Martin
2025-03-23 06:54:42 UTC
konsole output martin@fedora:~$ krusader kf.i18n: KLocalizedString: Domain is not set for this string, translation will not work. Please see https://api.kde.org/frameworks/ki18n/html/prg_guide.html msgid: "No jobs" msgid_plural: "" msgctxt: "" 07:49:40.594-warning default unknown@0 # Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8. Qt depends on a UTF-8 locale, and has switched to "C.UTF-8" instead. If this causes problems, reconfigure your locale. See the locale(1) manual for more information. 07:49:40.878-warning kf.i18n unknown@0 # Trying to convert empty KLocalizedString to QString. Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8. Qt depends on a UTF-8 locale, and has switched to "C.UTF-8" instead. If this causes problems, reconfigure your locale. See the locale(1) manual for more information. Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8. Qt depends on a UTF-8 locale, and has switched to "C.UTF-8" instead. If this causes problems, reconfigure your locale. See the locale(1) manual for more information. QIODevice::setTextModeEnabled (KrLinecountingProcess): The device is not open 07:49:47.326-warning kf.kio.workers.file unknown@0 # readData() returned -1 07:49:47.326-warning kf.kio.core unknown@0 # Connection::send() called with connection not inited QIODevice::setTextModeEnabled (KrLinecountingProcess): The device is not open 07:52:30.076-warning kf.kio.workers.file unknown@0 # readData() returned -1 07:52:30.076-warning kf.kio.core unknown@0 # Connection::send() called with connection not inited --- a/plugins/krarc/krarc.cpp
+++ b/plugins/krarc/krarc.cpp
@@ -378,7 +378,6 @@
QDir::setCurrent(arcTempDir);
SET_KRCODEC
- proc.setTextModeEnabled(false);
proc.start();
RESET_KRCODEC
@@ -1030,6 +1029,7 @@
QString kio_krarcProtocol::localeEncodedString(QString str)
{
// Note: KRFUNC was not used here in order to avoid filling the log with too much information
+ return str;
if (noencoding)
return str;
Created attachment 2130741 [details]
tempomary Patch for bug in krarc
I managed to debug this issue with AI, compile a custom SRPM via mock, and confirmed the fix. The bug is caused by two Qt6 porting regressions inside plugins/krarc/krarc.cpp.
Calling proc.setTextModeEnabled(false); before the process starts triggers a 'Device is not open' error and breaks the KIO worker stream.
The custom localeEncodedString() hack using private unicode characters (0xE000) completely breaks the cpio command in Qt6. Bypassing it (e.g., returning the string directly) instantly resolves the 'Access Denied' / 'readData() returned -1' issue and allows reading and copying files from RPMs again.
I am attaching a temporary .patch that makes the module functional again on modern UTF-8 systems, though upstream might need to rewrite the codec logic properly using Qt6 QStringEncoder."
|