| Summary: | Okular crashes when opening a faulty file | ||
|---|---|---|---|
| Product: | [Applications] okular | Reporter: | aronkvh |
| Component: | EPub backend | Assignee: | aronkvh |
| Status: | CONFIRMED --- | ||
| Severity: | crash | CC: | aacid, gilbertd+kde |
| Priority: | NOR | ||
| Version First Reported In: | 22.12.2 | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| Attachments: |
faulty file
faultyfile_fixed |
||
|
Description
aronkvh
2023-02-25 18:52:22 UTC
Please give us the faulty file :) Dear Bug Submitter, This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information as soon as possible and set the bug status as REPORTED. Due to regular bug tracker maintenance, if the bug is still in NEEDSINFO status with no change in 30 days the bug will be closed as RESOLVED > WORKSFORME due to lack of needed information. For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging If you have already provided the requested information, please mark the bug as REPORTED so that the KDE team knows that the bug is ready to be confirmed. Thank you for helping us make KDE software even better for everyone! Created attachment 157421 [details]
faulty file
Created attachment 157452 [details]
faultyfile_fixed
#0 __strcmp_avx2 () at ../sysdeps/x86_64/multiarch/strcmp-avx2.S:287
#1 0x00007fffd02f5068 in FindNode (List=0x10f4490, Data=Data@entry=0x7fffffffbe30)
at /usr/src/debug/ebook-tools-0.2.2-23.fc37.x86_64/src/libepub/linklist.c:116
Compare = <optimized out>
#2 0x00007fffd02f5239 in _opf_manifest_get_by_id (opf=<optimized out>, id=<optimized out>)
at /usr/src/debug/ebook-tools-0.2.2-23.fc37.x86_64/src/libepub/opf.c:767
data = {nspace = 0x7fffffffbe50 "", modules = 0xfffffffffffffed0 <error: Cannot access memory at address 0xfffffffffffffed0>, id = 0x0, href = 0x0, type = 0x0, fallback = 0x7fffe0c90526 <Okular::Document::notice(QString const&, int)> "UH\211\345H\203\354@H\211}\330H\211uЉU\314f\017\357\300\017)E\340f\017\326E\360H\213E\320H\211\307\350\353,", fbStyle = 0x0}
#3 0x00007fffd02f528e in _get_spine_it_url (it=it@entry=0x10f4350)
at /usr/src/debug/ebook-tools-0.2.2-23.fc37.x86_64/src/libepub/epub.c:258
tmp = <optimized out>
data = 0x10ea070
#4 0x00007fffd02f5322 in epub_it_get_curr (it=0x10f4350)
at /usr/src/debug/ebook-tools-0.2.2-23.fc37.x86_64/src/libepub/epub.c:343
#5 0x00007fffd232478a in Epub::Converter::convert(QString const&) (this=0x10d1450, fileName=...)
at /discs/more/git/okular/generators/epub/converter.cpp:360
newDocument = 0x10d5530
_cursor = 0x10d6420
it = 0x10f4350
firstPage = false
movieAnnots = {d = 0x7ffff5f6d240 <QArrayData::shared_null>}
soundActions = {d = 0x7ffff5f6d240 <QArrayData::shared_null>}
orig = {d = 0x9558c0, {data = {current_group = 0, resolve_mask = 1965951}, for_faster_swapping_dont_use = 31455216}}
p = {d = 0x10c9580, {data = {current_group = 0, resolve_mask = 1965951}, for_faster_swapping_dont_use = 31455216}}
videoSize = {wd = 320, ht = 240}
__PRETTY_FUNCTION__ = "virtual QTextDocument* Epub::Converter::convert(const QString&)"
tit = 0xff
hit = {c = {{d = 0x10d28c8, e = 0x10d28c8}}, i = {i = 0x7ffff7fd85a2 <_dl_fixup+258>}, n = {i = 0x5}}
#6 0x00007fffe0d2478a in Okular::TextDocumentConverter::convertWithPassword(QString const&, QString const&)
(this=0x10d1450, fileName=...) at /discs/more/git/okular/core/textdocumentgenerator.cpp:52
doc = 0x10d6cb0
#7 0x00007fffe0d25890 in Okular::TextDocumentGenerator::loadDocumentWithPassword(QString const&, QVector<Okular::Page*>&, QString const&) (this=0x10d6cb0, fileName=..., pagesVector=..., password=...)
at /discs/more/git/okular/core/textdocumentgenerator.cpp:288
d = 0x98c0c0
openResult = Okular::Document::OpenSuccess
linkInfos = {<QListSpecialMethods<Okular::TextDocumentGeneratorPrivate::LinkInfo>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffffffc860}, d = 0x7fffffffc860}}
annotationInfos = {<QListSpecialMethods<Okular::TextDocumentGeneratorPrivate::AnnotationInfo>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffffffc858}, d = 0x7fffffffc858}}
size = {wd = 566784540, ht = 1080302727}
objects = {d = 0x7fffffffc9c0}
annots = {d = 0x10c97e0}
#8 0x00007fffe0cc659e in Okular::DocumentPrivate::openDocumentInternal(KPluginMetaData const&, bool, QString const&, QByteArray const&, QString const&)
(this=0x7465c0, offer=..., isstdin=false, docFile=..., filedata=..., password=...)
at /discs/more/git/okular/core/document.cpp:943
propName = {d = 0x10d0c60}
genIt = {i = 0x10da870}
errorToOpenErrorConnection = {d_ptr = 0x10d1720}
window = 0xe58a70
dpi = {wd = 157.06280193236714, ht = 160.89149560117301}
__PRETTY_FUNCTION__ = "Okular::Document::OpenResult Okular::DocumentPrivate::openDocumentInternal(const KPluginMetaData&, bool, const QString&, const QByteArray&, const QString&)"
openResult = Okular::Document::OpenError
#9 0x00007fffe0cd00c7 in Okular::Document::openDocument(QString const&, QUrl const&, QMimeType const&, QString const&) (this=0x7e08e0, docFile=..., url=..., _mime=..., password=...) at /discs/more/git/okular/core/document.cpp:2461
db = {d = 0x7ffff616b380 <(anonymous namespace)::Q_QGS_staticQMimeDatabase::innerFunction()::holder>}
mime = {d = {d = 0x10d1150}}
filedata = {d = 0x7ffff5f6d240 <QArrayData::shared_null>}
fd = -1
triedMimeFromFileContent = false
__PRETTY_FUNCTION__ = "Okular::Document::OpenResult Okular::Document::openDocument(const QString&, const QUrl&, const QMimeType&, const QString&)"
fromFileDescriptor = false
offer = {m_metaData = {dead = 0x0, o = {d = 0xac9dd0}}, m_fileName = {d = 0xa89bc0}, d = {d = 0xab5720}}
openResult = (Okular::Document::OpenError | Okular::Document::OpenNeedsPassword | unknown: 0x7ffc)
loadedViewport = {pageNumber = -523961464, rePos = {enabled = 250, normalizedX = 1.2461174142536628e-306, normalizedY = 6.9533558072168294e-310, pos = (unknown: 0xffffd0f0)}, autoFit = {enabled = 32, width = 214, height = 255}}
nextViewport = {pageNumber = 7059808, rePos = {enabled = 16, normalizedX = 6.9533558073049707e-310, normalizedY = 6.9533491685746303e-310, pos = (Okular::DocumentViewport::Center | unknown: 0x4)}, autoFit = {enabled = false, width = false, height = false}}
docScripts = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffe10b7a00 <Okular::Document::openDocument(QString const&, QUrl const&, QMimeType const&, QString const&)@got.plt>}, d = 0x7fffe10b7a00 <Okular::Document::openDocument(QString const&, QUrl const&, QMimeType const&, QString const&)@got.plt>}}, <No data fields>}
#10 0x00007fffe0ed1b16 in Okular::Part::doOpenFile(QMimeType const&, QString const&, bool*)
(this=0x68d820, mimeA=..., fileNameToOpenA=..., isCompressedFile=0x7fffffffd187)
at /discs/more/git/okular/part/part.cpp:1459
walletName = {d = 0x7ffff616b380 <(anonymous namespace)::Q_QGS_staticQMimeDatabase::innerFunction()::holder>}
firstInput = 255
triedWallet = 214
walletFolder = {d = 0x0}
walletKey = {d = 0x0}
wallet = 0x10d0d60
keep = false
db = {d = 0x7ffff616b380 <(anonymous namespace)::Q_QGS_staticQMimeDatabase::innerFunction()::holder>}
openResult = Okular::Document::OpenError
uncompressOk = true
mime = {d = {d = 0x10d1150}}
fileNameToOpen = {d = 0x10cd190}
compressionType = KCompressionDevice::None
mimes = {<QListSpecialMethods<QMimeType>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x10d1390}, d = 0x10d1390}}
fileNameToOpen = {d = 0x10cd190}
--Type <RET> for more, q to quit, c to continue without paging--
isstdin = false
fileInfo = {d_ptr = {d = 0x10c1c30}}
db = {d = 0x7ffff616b380 <(anonymous namespace)::Q_QGS_staticQMimeDatabase::innerFunction()::holder>}
pathMime = {d = {d = 0x10d0d20}}
mime = {d = {d = 0x10d1150}}
openResult = Okular::Document::OpenError
isCompressedFile = false
canSearch = 214
ok = 16
hasEmbeddedFiles = false
presentationBecauseOfDocumentMetadata = false
#12 0x00007ffff7f686a5 in KParts::ReadOnlyPartPrivate::openLocalFile() (this=this@entry=0x6bb8b0)
at /usr/src/debug/kf5-kparts-5.104.0-1.fc37.x86_64/src/readonlypart.cpp:184
q = 0x68d820
ret = <optimized out>
#13 0x00007ffff7f6cebf in KParts::ReadOnlyPart::openUrl(QUrl const&) (this=<optimized out>, url=...)
at /usr/src/debug/kf5-kparts-5.104.0-1.fc37.x86_64/src/readonlypart.cpp:145
d = 0x6bb8b0
args = {d = {d = 0x10d12e0}}
closed = true
#14 0x00007fffe0ed4856 in Okular::Part::openUrl(QUrl const&, bool)
(this=0x68d820, _url=..., swapInsteadOfOpening=false) at /discs/more/git/okular/part/part.cpp:1819
args = {d = {d = 0x70d3b0}}
url = {d = 0x10cd130}
openOk = true
#15 0x00007fffe0ed440a in Okular::Part::openUrl(QUrl const&) (this=0x68d820, url=...)
at /discs/more/git/okular/part/part.cpp:1767
#16 0x000000000041d972 in Shell::openUrl(QUrl const&, QString const&)
(this=0x60df00, url=..., serializedOptions=...) at /discs/more/git/okular/shell/shell.cpp:416
openOk = false
isstdin = false
activePart = 0x68d820
activeTab = 0
#17 0x000000000041d4d0 in Shell::openDocument(QUrl const&, QString const&)
(this=0x60df00, url=..., serializedOptions=...) at /discs/more/git/okular/shell/shell.cpp:360
part = 0x68d820
#18 0x000000000041927c in Okular::main(QStringList const&, QString const&) (paths=..., serializedOptions=...)
at /discs/more/git/okular/shell/okular_main.cpp:213
page = {d = 0x7ffff5f6d1e0 <qt_array>}
url = {d = 0x10cd130}
i = 0
shell = 0x60df00
#19 0x00000000004164e8 in main(int, char**) (argc=2, argv=0x7fffffffde28)
at /discs/more/git/okular/shell/main.cpp:97
paths = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7564b0}, d = 0x7564b0}}, <No data fields>}
status = (unknown: 0xf8fdd800)
app = {<QGuiApplication> = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x7ffff70d5428 <vtable for QApplication+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff60518c0 <qt_meta_stringdata_QObject>, data = 0x7ffff60517a0 <qt_meta_data_QObject>, static_metacall = 0x7ffff5ece330 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x46fb50}, static staticQtMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff6054860 <qt_meta_stringdata_Qt>,--Type <RET> for more, q to quit, c to continue without paging--
data = 0x7ffff60519e0 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff61553e0 <QObject::staticMetaObject>}, stringdata = 0x7ffff604bd40 <qt_meta_stringdata_QCoreApplication>, data = 0x7ffff604bc20 <qt_meta_data_QCoreApplication>, static_metacall = 0x7ffff5e9ed90 <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static self = 0x7fffffffdab0}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff615dd00 <QCoreApplication::staticMetaObject>}, stringdata = 0x7ffff6718600 <qt_meta_stringdata_QGuiApplication>, data = 0x7ffff6718380 <qt_meta_data_QGuiApplication>, static_metacall = 0x7ffff6360ae0 <QGuiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff6819b40 <QGuiApplication::staticMetaObject>}, stringdata = 0x7ffff6f6e8c0 <qt_meta_stringdata_QApplication>, data = 0x7ffff6f6e740 <qt_meta_data_QApplication>, static_metacall = 0x7ffff6bb28e0 <QApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
aboutData = {d = std::unique_ptr<KAboutDataPrivate> = {get() = 0x6de4e0}}
parser = {d = 0x6e80e0}
The 'einfo' program that uses the same library crashes in the same way, so I'm guessing it's the library.
[dg@dalek build]$ gdb /usr/bin/einfo
....
(gdb) r -p ~/bugs/okular-466425-epubcrash/faulty_file.epub
...
Program received signal SIGSEGV, Segmentation fault.
__strcmp_avx2 () at ../sysdeps/x86_64/multiarch/strcmp-avx2.S:287
287 CMP_R1_S2_ymm (%ymm0, (%rsi), %ymm2, %ymm1)
(gdb) where
#0 __strcmp_avx2 () at ../sysdeps/x86_64/multiarch/strcmp-avx2.S:287
#1 0x00007ffff7f94068 in FindNode (List=0x55555555f9a0, Data=Data@entry=0x7fffffffdc40)
at /usr/src/debug/ebook-tools-0.2.2-23.fc37.x86_64/src/libepub/linklist.c:116
#2 0x00007ffff7f94239 in _opf_manifest_get_by_id (opf=<optimized out>, id=<optimized out>)
at /usr/src/debug/ebook-tools-0.2.2-23.fc37.x86_64/src/libepub/opf.c:767
#3 0x00007ffff7f9428e in _get_spine_it_url (it=it@entry=0x55555555fc40)
at /usr/src/debug/ebook-tools-0.2.2-23.fc37.x86_64/src/libepub/epub.c:258
#4 0x00007ffff7f94322 in epub_it_get_curr (it=0x55555555fc40) at /usr/src/debug/ebook-tools-0.2.2-23.fc37.x86_64/src/libepub/epub.c:343
#5 0x0000555555555357 in main (argc=<optimized out>, argv=0x7fffffffde28)
at /usr/src/debug/ebook-tools-0.2.2-23.fc37.x86_64/src/tools/einfo.c:122
This seems to be fixed by the set of fixes in: https://github.com/captn3m0/ebook-tools referenced from: https://sourceforge.net/p/ebook-tools/bugs/10/ heck, this library is old; it seems worth taking those fixes somehow, not sure how. Anyway, erm what do we do with this Okular bug? |