https://bugs.kde.org/show_bug.cgi?id=429793

            Bug ID: 429793
           Summary: digiKam crashes in libicu when run with zzuf -s1 in
                    WSL1
           Product: digikam
           Version: 6.4.0
          Platform: openSUSE RPMs
                OS: Linux
            Status: REPORTED
          Severity: crash
          Priority: NOR
         Component: general
          Assignee: digikam-bugs-n...@kde.org
          Reporter: the.true.nathan.mi...@gmail.com
  Target Milestone: ---

SUMMARY
I ran digiKam with with "zzuf -s1 digikam" and it segfaulted in libicu.

STEPS TO REPRODUCE
1. gdb -ex "follow-fork-mode child" --args zzuf -s1 digikam
2. In gdb type r or run
3. Type thread apply all bt full

OBSERVED RESULT
digiKam crashes with this backtrace:
Thread 2.1 (Thread 0x7fffff49fa00 (LWP 22296)):
#0  strcmpAfterPrefix (pPrefixLength=<synthetic pointer>, s2=0x7fffdc46c380
<error: Cannot access memory at address 0x7fffdc46c380>, s1=0x7ffffffed780
"dt65l/cnvalias.icu") at ucmndata.cpp:112
        c1 = 117
        c2 = <error reading variable c2 (Cannot access memory at address
0x7fffdc46c37f)>
        pl = 2
        cmp = 0
        pl = <optimized out>
        cmp = <optimized out>
        c1 = <optimized out>
        c2 = <optimized out>
#1  offsetTOCPrefixBinarySearch (count=3667, toc=0x7fffcc460094,
names=0x7fffcc460090 "S\016", s=<optimized out>) at ucmndata.cpp:155
        i = 917
        prefixLength = 2
        cmp = <optimized out>
        start = 1
        limit = 1833
        startPrefixLength = 2
        limitPrefixLength = 2
        start = <optimized out>
        limit = <optimized out>
        startPrefixLength = <optimized out>
        limitPrefixLength = <optimized out>
        i = <optimized out>
        prefixLength = <optimized out>
        cmp = <optimized out>
#2  offsetTOCLookupFn (pData=<optimized out>, tocEntryName=<optimized out>,
pLength=0x7ffffffed650, pErrorCode=<optimized out>) at ucmndata.cpp:243
        base = 0x7fffcc460090 "S\016"
        number = <optimized out>
        count = 3667
        toc = 0x7fffcc460090
#3  0x00007fffef631e3f in doLoadFromCommonData (isICUData=isICUData@entry=1
'\001', tocEntryName=<optimized out>, path=path@entry=0x7fffef70c61d
"icudt65l", type=type@entry=0x7fffef70d6a4 <DATA_TYPE> "icu",
name=name@entry=0x7fffef70d6a8 <DATA_NAME> "cnvalias",
isAcceptable=isAcceptable@entry=0x7fffef63f600 <isAcceptable(void*, char
const*, char const*, UDataInfo const*)>, context=<optimized out>,
subErrorCode=<optimized out>, pErrorCode=<optimized out>) at udata.cpp:1075
        length = -275206368
        pEntryData = <optimized out>
        pHeader = <optimized out>
        pCommonData = 0x845c200
        commonDataIndex = 1
        checkedExtendedICUData = 1 '\001'
#4  0x00007fffef632877 in doOpenChoice (path=0x7fffef70c61d "icudt65l",
path@entry=0x0, type=<optimized out>, type@entry=0x7fffef70d6a4 <DATA_TYPE>
"icu", name=<optimized out>, name@entry=0x7fffef70d6a8 <DATA_NAME> "cnvalias",
isAcceptable=isAcceptable@entry=0x7fffef63f600 <isAcceptable(void*, char
const*, char const*, UDataInfo const*)>, context=context@entry=0x0,
pErrorCode=pErrorCode@entry=0x7ffffffed944) at udata.cpp:1354
        retVal = 0x0
        dataPath = <optimized out>
        tocEntrySuffixIndex = <optimized out>
        tocEntryPathSuffix = 0x7ffffffed7c6 "cnvalias.icu"
        subErrorCode = U_ZERO_ERROR
        treeChar = <optimized out>
        isICUData = 1 '\001'
        tocEntryName = {<icu_65_1::UMemory> = {<No data fields>}, buffer = {ptr
= 0x7ffffffed77d "icudt65l/cnvalias.icu", capacity = 40, needToRelease = 0
'\000', stackArray = "icudt65l/cnvalias.icu", '\000' <repeats 18 times>}, len =
21}
        tocEntryPath = {<icu_65_1::UMemory> = {<No data fields>}, buffer = {ptr
= 0x7ffffffed7bd "icudt65l/cnvalias.icu", capacity = 40, needToRelease = 0
'\000', stackArray = "icudt65l/cnvalias.icu", '\000' <repeats 18 times>}, len =
21}
        pkgName = {<icu_65_1::UMemory> = {<No data fields>}, buffer = {ptr =
0x7ffffffed7fd "icudt65l", capacity = 40, needToRelease = 0 '\000', stackArray
=
"icudt65l\000\000\000\222\000c\357\377\177\000\000\004\334p\357\377\177\000\000\322\001c\357\377\177\000\000\004\334p\357\377"},
len = 8}
        treeName = {<icu_65_1::UMemory> = {<No data fields>}, buffer = {ptr =
0x7ffffffed83d "", capacity = 40, needToRelease = 0 '\000', stackArray =
"\000\000\000(", '\000' <repeats 23 times>,
"\004\334p\357\377\177\000\000\000\000\000\000"}, len = 0}
#5  0x00007fffef632b60 in udata_openChoice_65_1 (path=path@entry=0x0,
type=type@entry=0x7fffef70d6a4 <DATA_TYPE> "icu",
name=name@entry=0x7fffef70d6a8 <DATA_NAME> "cnvalias",
isAcceptable=isAcceptable@entry=0x7fffef63f600 <isAcceptable(void*, char
const*, char const*, UDataInfo const*)>, context=context@entry=0x0,
pErrorCode=pErrorCode@entry=0x7ffffffed944) at udata.cpp:1428
No locals.
#6  0x00007fffef63f7da in initAliasData (errCode=@0x7ffffffed944: U_ZERO_ERROR)
at ucnv_io.cpp:242
        data = <optimized out>
        table = <optimized out>
        sectionSizes = <optimized out>
        tableStart = <optimized out>
        currOffset = <optimized out>
#7  0x00007fffef640462 in icu_65_1::umtx_initOnce (errCode=@0x7ffffffed944:
U_ZERO_ERROR, fp=0x7fffef63f7a0 <initAliasData(UErrorCode&)>, uio=...) at
umutex.h:145
        errCode = @0x7ffffffed944: U_ZERO_ERROR
        fp = 0x7fffef63f7a0 <initAliasData(UErrorCode&)>
        uio = @0x7fffef99d770: {fState = {<std::__atomic_base<int>> = {static
_S_alignment = 4, _M_i = 1}, <No data fields>}, fErrCode = U_ZERO_ERROR}
#8  haveAliasData (pErrorCode=0x7ffffffed944,
pErrorCode@entry=0x14193da42c057c00) at ucnv_io.cpp:314
No locals.
#9  ucnv_getStandardName_65_1 (alias=alias@entry=0x7fffef70dc04
<_UTF8StaticData+4> "UTF-8", standard=standard@entry=0x7ffffb2b68cd "MIME",
pErrorCode=pErrorCode@entry=0x7ffffffed944) at ucnv_io.cpp:962
No locals.
#10 0x00007ffffb15760e in QIcuCodec::codecForNameUnlocked (name=0x7fffef70dc04
<_UTF8StaticData+4> "UTF-8") at codecs/qicucodec.cpp:471
        error = U_ZERO_ERROR
        standardName = <optimized out>
        qt_only = <optimized out>
        globalData = <optimized out>
        cache = <optimized out>
        codec = <optimized out>
        c = <optimized out>
        conv = <optimized out>
#11 0x00007ffffb15854d in QIcuCodec::defaultCodecUnlocked () at
codecs/qicucodec.cpp:448
        globalData = 0x7ffffb5a4f80 <(anonymous
namespace)::Q_QGS_globalInstance::innerFunction()::holder>
        c = <optimized out>
        name = <optimized out>
#12 0x00007ffffb1545bf in QTextCodec::codecForLocale () at
codecs/qtextcodec.cpp:715
        globalData = <optimized out>
        codec = <optimized out>
#13 0x00007ffffaf9f789 in QString::fromLocal8Bit_helper
(str=str@entry=0x845c258 "en_US.UTF-8", size=11) at tools/qstring.cpp:5573
        codec = <optimized out>
#14 0x00007ffffaf05e4b in QString::fromLocal8Bit (size=<optimized out>,
str=<optimized out>) at
../../include/QtCore/../../src/corelib/tools/qstring.h:576
No locals.
#15 QString::fromLocal8Bit (str=...) at
../../include/QtCore/../../src/corelib/tools/qstring.h:583
No locals.
#16 qEnvironmentVariable (varName=varName@entry=0x7ffffb263645 "LANG",
defaultValue=...) at global/qglobal.cpp:3375
        value = {d = 0x845c240}
#17 0x00007ffffaf05f1f in qEnvironmentVariable
(varName=varName@entry=0x7ffffb263645 "LANG") at global/qglobal.cpp:3382
No locals.
#18 0x00007ffffafb62e1 in QSystemLocale::fallbackUiLocale (this=<optimized
out>) at tools/qlocale_unix.cpp:144
        lang = {static null = {<No data fields>}, d = 0x7ffffb1d96e0
<QArrayData::shared_null>}
        language = {static null = {<No data fields>}, d = 0x14193da42c057c00}
#19 0x00007ffffaf74a8e in QLocalePrivate::updateSystemPrivate () at
tools/qlocale.cpp:683
        sys_locale = 0x7ffffb5a2228 <(anonymous
namespace)::Q_QGS_QSystemLocale_globalSystemLocale::innerFunction()::holder>
        res = {d = {data = {c = 2 '\002', uc = 2 '\002', s = 2, sc = 2 '\002',
us = 2, i = 2, u = 2, l = 2, ul = 2, b = 2, d = 9.8813129168249309e-324, f =
2.80259693e-45, real = 9.8813129168249309e-324, ll = 2, ull = 2, o = 0x2, ptr =
0x2, shared = 0x2}, type = 64, is_shared = 0, is_null = 0}}
#20 0x00007ffffaf753c5 in systemData () at tools/qlocale.cpp:734
        systemDataMutex = {d_ptr = {_q_value = {_M_b = {_M_p = 0x1}, static
is_always_lock_free = <error reading variable: Missing ELF symbol
"std::atomic<QMutexData*>::is_always_lock_free".>}}}
#21 0x00007ffffaf754a5 in defaultData () at tools/qlocale.cpp:747
No locals.
#22 (anonymous namespace)::Q_QGS_defaultLocalePrivate::Holder::Holder
(this=0x7ffffb5a2140 <(anonymous
namespace)::Q_QGS_defaultLocalePrivate::innerFunction()::holder>) at
tools/qlocale.cpp:798
No locals.
#23 (anonymous namespace)::Q_QGS_defaultLocalePrivate::innerFunction () at
tools/qlocale.cpp:798
        holder = {<(anonymous
namespace)::Q_QGS_defaultLocalePrivate::HolderBase> = {<No data fields>}, value
= {d = 0x0}}
#24 QGlobalStatic<QSharedDataPointer<QLocalePrivate>, (anonymous
namespace)::Q_QGS_defaultLocalePrivate::innerFunction, (anonymous
namespace)::Q_QGS_defaultLocalePrivate::guard>::operator* (this=<optimized
out>) at ../../include/QtCore/../../src/corelib/global/qglobalstatic.h:144
No locals.
#25 QLocale::QLocale (this=0x7ffffffedc50) at tools/qlocale.cpp:882
No locals.
#26 0x00007ffffb03c294 in
QResourceFileEnginePrivate::QResourceFileEnginePrivate (this=0x845c110) at
io/qresource.cpp:1227
No locals.
#27 QResourceFileEngine::QResourceFileEngine (this=0x84404a0, file=...) at
io/qresource.cpp:1256
        d = <optimized out>
#28 0x00007ffffb05a0ac in _q_resolveEntryAndCreateLegacyEngine_recursive
(entry=..., data=..., engine=@0x7ffffffedd68: 0x0,
resolvingEntry=resolvingEntry@entry=false) at io/qfilesystemengine.cpp:150
        paths = <optimized out>
        ch = <optimized out>
        prefixSeparator = 0
        filePath = @0x7ffffffedcd0: {static null = {<No data fields>}, d =
0x7ffffb1d75e0
<QLibraryInfoPrivate::findConfiguration()::{lambda()#1}::operator()()
const::qstring_literal>}
#29 0x00007ffffb05a216 in QFileSystemEngine::resolveEntryAndCreateLegacyEngine
(entry=..., data=...) at io/qfilesystemengine.cpp:196
        copy = {m_filePath = {static null = {<No data fields>}, d =
0x7ffffb1d75e0
<QLibraryInfoPrivate::findConfiguration()::{lambda()#1}::operator()()
const::qstring_literal>}, m_nativeFilePath = {d = 0x7ffffb1d96e0
<QArrayData::shared_null>}, m_lastSeparator = -2, m_firstDotInFileName = -2,
m_lastDotInFileName = 0}
        engine = 0x0
#30 0x00007ffffb022669 in QFileInfo::exists (file=...) at io/qfileinfo.cpp:711
        entry = {m_filePath = {static null = {<No data fields>}, d =
0x7ffffb1d75e0
<QLibraryInfoPrivate::findConfiguration()::{lambda()#1}::operator()()
const::qstring_literal>}, m_nativeFilePath = {d = 0x7ffffb1d96e0
<QArrayData::shared_null>}, m_lastSeparator = -2, m_firstDotInFileName = -2,
m_lastDotInFileName = 0}
        data = {knownFlagsMask = {i = 0}, entryFlags = {i = 0}, size_ = -1,
accessTime_ = 140737430638208, birthTime_ = 140737430638096,
metadataChangeTime_ = 138566096, modificationTime_ = 4294967295, userId_ = 8,
groupId_ = 268}
        engine = <optimized out>
#31 0x00007ffffaf07013 in QLibraryInfoPrivate::findConfiguration () at
global/qlibraryinfo.cpp:182
        qtconfig = {static null = {<No data fields>}, d = 0x7ffffb1d75e0
<QLibraryInfoPrivate::findConfiguration()::{lambda()#1}::operator()()
const::qstring_literal>}
#32 0x00007ffffaf075a2 in QLibrarySettings::load (this=0x7ffffb5a1060
<(anonymous namespace)::Q_QGS_qt_library_settings::innerFunction()::holder>) at
global/qlibraryinfo.cpp:138
        haveDevicePaths = <optimized out>
        haveEffectivePaths = <optimized out>
        havePaths = <optimized out>
        children = <optimized out>
        haveEffectiveSourcePaths = <optimized out>
#33 0x00007ffffaf07d1b in QLibrarySettings::QLibrarySettings
(this=0x7ffffb5a1060 <(anonymous
namespace)::Q_QGS_qt_library_settings::innerFunction()::holder>) at
global/qlibraryinfo.cpp:132
No locals.
#34 (anonymous namespace)::Q_QGS_qt_library_settings::Holder::Holder
(this=0x7ffffb5a1060 <(anonymous
namespace)::Q_QGS_qt_library_settings::innerFunction()::holder>) at
global/qlibraryinfo.cpp:89
No locals.
#35 (anonymous namespace)::Q_QGS_qt_library_settings::innerFunction () at
global/qlibraryinfo.cpp:89
        holder = {<(anonymous
namespace)::Q_QGS_qt_library_settings::HolderBase> = {<No data fields>}, value
= {settings = {d = 0x0}, reloadOnQAppAvailable = false}}
#36 QGlobalStatic<QLibrarySettings, (anonymous
namespace)::Q_QGS_qt_library_settings::innerFunction, (anonymous
namespace)::Q_QGS_qt_library_settings::guard>::operator() (this=<optimized
out>) at ../../include/QtCore/../../src/corelib/global/qglobalstatic.h:135
No locals.
#37 QLibraryInfoPrivate::configuration () at global/qlibraryinfo.cpp:115
        ls = <optimized out>
        ls = <optimized out>
#38 QLibraryInfo::location (loc=loc@entry=QLibraryInfo::DataPath) at
global/qlibraryinfo.cpp:494
        ret = {static null = {<No data fields>}, d = 0x7ffffb1d96e0
<QArrayData::shared_null>}
        fromConf = false
#39 0x00007ffffb05f108 in QLoggingRegistry::initializeRules
(this=this@entry=0x7ffffb5a25e0 <(anonymous
namespace)::Q_QGS_qtLoggingRegistry::innerFunction()::holder>) at
io/qloggingregistry.cpp:331
        er = {d = 0x7ffffb1d96e0 <QArrayData::shared_null>}
        qr = {d = 0x7ffffb1d96e0 <QArrayData::shared_null>}
        cr = {d = 0x7ffffb1d96e0 <QArrayData::shared_null>}
        rulesFilePath = {d = 0x7ffffb1d96e0 <QArrayData::shared_null>}
        rulesSrc = {d = 0x7ffffb1d96e0 <QArrayData::shared_null>}
        configFileName = {static null = {<No data fields>}, d = 0x7ffffb294040
<QLoggingRegistry::initializeRules()::{lambda()#1}::operator()()
const::qstring_literal>}
        qtConfigPath = {static null = {<No data fields>}, d = 0x0}
        envPath = {static null = {<No data fields>}, d = 0x70}
        locker = <optimized out>
#40 0x00007ffffb060951 in QLoggingRegistry::QLoggingRegistry
(this=0x7ffffb5a25e0 <(anonymous
namespace)::Q_QGS_qtLoggingRegistry::innerFunction()::holder>) at
io/qloggingregistry.cpp:280
No locals.
#41 (anonymous namespace)::Q_QGS_qtLoggingRegistry::Holder::Holder
(this=0x7ffffb5a25e0 <(anonymous
namespace)::Q_QGS_qtLoggingRegistry::innerFunction()::holder>) at
io/qloggingregistry.cpp:62
No locals.
#42 (anonymous namespace)::Q_QGS_qtLoggingRegistry::innerFunction () at
io/qloggingregistry.cpp:62
        holder = {<(anonymous namespace)::Q_QGS_qtLoggingRegistry::HolderBase>
= {<No data fields>}, value = {registryMutex = {<QBasicMutex> = {d_ptr =
{_q_value = {_M_b = {_M_p = 0x0}, static is_always_lock_free = <error reading
variable: Missing ELF symbol
"std::atomic<QMutexData*>::is_always_lock_free".>}}}, <No data fields>},
ruleSets = {{d = 0x7ffffb1d96e0 <QArrayData::shared_null>}, {d = 0x7ffffb1d96e0
<QArrayData::shared_null>}, {d = 0x7ffffb1d96e0 <QArrayData::shared_null>}, {d
= 0x7ffffb1d96e0 <QArrayData::shared_null>}}, categories = {{d = 0x7ffffb1db7c0
<QHashData::shared_null>, e = 0x7ffffb1db7c0 <QHashData::shared_null>}},
categoryFilter = 0x7ffffb0601b0
<QLoggingRegistry::defaultCategoryFilter(QLoggingCategory*)>}}
#43 QGlobalStatic<QLoggingRegistry, (anonymous
namespace)::Q_QGS_qtLoggingRegistry::innerFunction, (anonymous
namespace)::Q_QGS_qtLoggingRegistry::guard>::operator() (this=<optimized out>)
at ../../include/QtCore/../../src/corelib/global/qglobalstatic.h:135
No locals.
#44 QLoggingRegistry::instance () at io/qloggingregistry.cpp:431
No locals.
#45 0x00007ffffb05d089 in QLoggingCategory::init (this=0x7ffff865a620
<category>, category=<optimized out>, severityLevel=QtInfoMsg) at
io/qloggingcategory.cpp:249
        reg = <optimized out>
#46 0x00007ffff837085c in __static_initialization_and_destruction_0
(__initialize_p=1, __priority=65535) at
/usr/src/debug/kio-5.71.0-lp152.2.9.1.x86_64/src/widgets/kdirmodel.cpp:50
No locals.
#47 _GLOBAL__sub_I_kdirmodel.cpp(void) () at
/usr/src/debug/kio-5.71.0-lp152.2.9.1.x86_64/build/src/widgets/KF5KIOWidgets_autogen/include/moc_kdirmodel.cpp:154
No locals.
#48 0x00007fffff40faba in call_init.part () from /lib64/ld-linux-x86-64.so.2
No symbol table info available.
#49 0x00007fffff40fbc6 in _dl_init () from /lib64/ld-linux-x86-64.so.2
No symbol table info available.
#50 0x00007fffff400eda in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
No symbol table info available.
#51 0x0000000000000001 in ?? ()
No symbol table info available.
#52 0x00007ffffffee4ef in ?? ()
No symbol table info available.
#53 0x0000000000000000 in ?? ()
No symbol table info available.

EXPECTED RESULT
digiKam shouldn't crash.

SOFTWARE/OS VERSIONS
Windows: Windows 10 2004 build 19041.630
macOS: 
Linux/KDE Plasma: OpenSUSE 15.2 Windows Subsystem for Linux 
(available in About System)
KDE Plasma Version: 4.11.22
KDE Frameworks Version: 4.14.38
Qt Version: 4.8.7

ADDITIONAL INFORMATION

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to