| Summary: | strigi flac analyser crashes with floating point (arithmetic) exception | ||
|---|---|---|---|
| Product: | [Unmaintained] nepomuk | Reporter: | Georg Wolfram <gosi> |
| Component: | general | Assignee: | Sebastian Trueg <sebastian> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | thomasj |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Arch Linux | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
SVN commit 1115155 by trueg: The stupid fix to a division by zero problem. There probably is a better solution but this at least stops Strigi from crashing. BUG: 234398 M +1 -1 flacendanalyzer.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1115155 *** Bug 240935 has been marked as a duplicate of this bug. *** |
Version: (using KDE 4.4.2) Compiler: gcc (GCC) 4.4.3 20100316 OS: Linux Installed from: Archlinux Packages gdb output from core file analysis: ------ Core was generated by `/usr/bin/nepomukservicestub nepomukstrigiservice'. Program terminated with signal 8, Arithmetic exception. #0 0xb6544073 in __udivmoddi4 () from /lib/libc.so.6 (gdb) bt #0 0xb6544073 in __udivmoddi4 () from /lib/libc.so.6 #1 0xb65442f8 in __divdi3_internal () from /lib/libc.so.6 #2 0xb51087cd in FlacEndAnalyzer::analyze (this=0xb2b68fb8, indexable=..., in=0x9c10320) at /home/georg/pacman/strigi/src/strigi-0.7.2/src/streamanalyzer/endanalyzers/flacendanalyzer.cpp:288 #3 0xb50ff68a in Strigi::StreamAnalyzerPrivate::analyze (this=0xb2b01de0, idx=..., input=0x9c10320) at /home/georg/pacman/strigi/src/strigi-0.7.2/src/streamanalyzer/streamanalyzer.cpp:421 #4 0xb50d8dad in Strigi::AnalysisResult::index (this=0xb34d4e08, file=0xb34d4da4) at /home/georg/pacman/strigi/src/strigi-0.7.2/src/streamanalyzer/analysisresult.cpp:233 #5 0xb4d44b74 in Nepomuk::IndexScheduler::analyzeFile(QFileInfo const&, Strigi::StreamAnalyzer*) () from /usr/lib/kde4/nepomukstrigiservice.so #6 0xb4d45e63 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, QFlags<Nepomuk::IndexScheduler::UpdateDirFlag>) () from /usr/lib/kde4/nepomukstrigiservice.so #7 0xb4d460a5 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, QFlags<Nepomuk::IndexScheduler::UpdateDirFlag>) () from /usr/lib/kde4/nepomukstrigiservice.so #8 0xb4d460a5 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, QFlags<Nepomuk::IndexScheduler::UpdateDirFlag>) () from /usr/lib/kde4/nepomukstrigiservice.so #9 0xb4d47c3b in Nepomuk::IndexScheduler::run() () from /usr/lib/kde4/nepomukstrigiservice.so #10 0xb758727e in ?? () from /usr/lib/libQtCore.so.4 #11 0xb751494c in start_thread () from /lib/libpthread.so.0 #12 0xb65faeae in clone () from /lib/libc.so.6 (gdb) select-frame 2 (gdb) info locals buf = 0xacbff0a0 "" blocktype = -127 '\201' nreq = 0 duration = 0 in_size = <value optimized out> nread = <value optimized out> blocksize = 4064 albumArtNum = 0 '\000' ----- Source code in flacendanalyzer.cpp:288: if(in_size>=0) indexable.addValue(factory->bitRateField,(uint32_t)(8*((in_size-in->position())/duration))); If duration is 0 then this will result in a division by zero.