Bug 209687 - Segfault in libstreamanalyzer: strigi file indexer keeps crashing
Summary: Segfault in libstreamanalyzer: strigi file indexer keeps crashing
Status: RESOLVED FIXED
Alias: None
Product: nepomuk
Classification: Miscellaneous
Component: general (show other bugs)
Version: unspecified
Platform: unspecified Linux
: NOR crash
Target Milestone: ---
Assignee: Sebastian Trueg
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-10-07 00:01 UTC by mutlu inek
Modified: 2009-11-23 15:47 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
A workaround to not crash (905 bytes, patch)
2009-10-08 12:24 UTC, Sebastian Trueg
Details

Note You need to log in before you can comment on or make changes to this bug.
Description mutlu inek 2009-10-07 00:01:32 UTC
Version:            (using KDE 4.3.1)
Compiler:          gcc 4.4.1 
OS:                Linux
Installed from:    Unlisted Binary Package

Description:
============

The nepomukservicestub which controls the strigi[service] keeps crashing. After a while Nepomuk does not launch any more Strigi file indexers. If I want to continue indexing I have to reactivate Strigi in the Systemsettings KCM.

The crash happens in libstreamanalyzer. Unfortunately, I have not been able to find out whether it is a certain file which causes strigi to crash.


Versions:
=========
KDE 4.3.1
soprano 2.3.1
strigi 0.7.0
nepomuk-playground rev. 1032047


dmesg:
======
[...]
nepomukservices[30935]: segfault at 0 ip b5ddf507 sp b3b3743c error 4 in libstreamanalyzer.so.0.7.0[b5dce000+74000]             
nepomukservices[30966]: segfault at 0 ip b5dd4507 sp b3b2c43c error 4 in libstreamanalyzer.so.0.7.0[b5dc3000+74000]
nepomukservices[30973]: segfault at 0 ip b5d0a507 sp b3a6243c error 4 in libstreamanalyzer.so.0.7.0[b5cf9000+74000]             
nepomukservices[30979]: segfault at 0 ip b5d95507 sp b3aed43c error 4 in libstreamanalyzer.so.0.7.0[b5d84000+74000]             
nepomukservices[30982]: segfault at 0 ip b5c93507 sp b39eb43c error 4 in libstreamanalyzer.so.0.7.0[b5c82000+74000]             
nepomukservices[31081]: segfault at 0 ip b5c9f507 sp b39f743c error 4 in libstreamanalyzer.so.0.7.0[b5c8e000+74000]
nepomukservices[31086]: segfault at 0 ip b5d11507 sp b3a6943c error 4 in libstreamanalyzer.so.0.7.0[b5d00000+74000]
nepomukservices[31093]: segfault at 0 ip b5c71507 sp b39c943c error 4 in libstreamanalyzer.so.0.7.0[b5c60000+74000]             
nepomukservices[31097]: segfault at 0 ip b5c72507 sp b39ca43c error 4 in libstreamanalyzer.so.0.7.0[b5c61000+74000]
nepomukservices[31100]: segfault at 0 ip b5c22507 sp b397a43c error 4 in libstreamanalyzer.so.0.7.0[b5c11000+74000]             
nepomukservices[31103]: segfault at 0 ip b5bfa507 sp b395243c error 4 in libstreamanalyzer.so.0.7.0[b5be9000+74000]
nepomukservices[31109]: segfault at 0 ip b5de1507 sp b3b3943c error 4 in libstreamanalyzer.so.0.7.0[b5dd0000+74000]
nepomukservices[31173]: segfault at 0 ip b5d74507 sp b3acc43c error 4 in libstreamanalyzer.so.0.7.0[b5d63000+74000]
nepomukservices[31181]: segfault at 0 ip b5cd3507 sp b3a2b43c error 4 in libstreamanalyzer.so.0.7.0[b5cc2000+74000]
nepomukservices[31202]: segfault at 0 ip b5d7e507 sp b3ad643c error 4 in libstreamanalyzer.so.0.7.0[b5d6d000+74000]
nepomukservices[31208]: segfault at 0 ip b5d56507 sp b3aae43c error 4 in libstreamanalyzer.so.0.7.0[b5d45000+74000]
nepomukservices[31216]: segfault at 0 ip b5c7e507 sp b39d643c error 4 in libstreamanalyzer.so.0.7.0[b5c6d000+74000]


gdb output:
===========

$ gdb nepomukservicestub 31401
[...]
(gdb) continue                                                                                            
Continuing.                                                                                               

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb3aeab70 (LWP 31403)]        
0xb5d91507 in Strigi::AnalysisResult::writerData() const () from /usr/lib/libstreamanalyzer.so.0
(gdb) bt                                                                                        
#0  0xb5d91507 in Strigi::AnalysisResult::writerData() const () from /usr/lib/libstreamanalyzer.so.0
#1  0xb5d915bb in Strigi::AnalysisResult::addTriplet(std::string const&, std::string const&, std::string const&) ()
   from /usr/lib/libstreamanalyzer.so.0                                                                            
#2  0xb5ddaa18 in ID3V2ThroughAnalyzer::connectInputStream(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0
#3  0xb5db8d5f in Strigi::StreamAnalyzerPrivate::analyze(Strigi::AnalysisResult&, Strigi::StreamBase<char>*) ()              
   from /usr/lib/libstreamanalyzer.so.0                                                                                      
#4  0xb5d92a28 in Strigi::AnalysisResult::indexChild(std::string const&, long, Strigi::StreamBase<char>*) ()                 
   from /usr/lib/libstreamanalyzer.so.0                                                                                      
#5  0xb5dd069e in PdfEndAnalyzer::handle(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0                  
#6  0xb5ddfc53 in PdfParser::handleSubStream(Strigi::StreamBase<char>*, std::string const&, int, int) ()                     
   from /usr/lib/libstreamanalyzer.so.0                                                                                      
#7  0xb5de003a in PdfParser::handleSubStream(Strigi::StreamBase<char>*, std::string const&, int, int, bool, std::string const&)
    () from /usr/lib/libstreamanalyzer.so.0                                                                                    
#8  0xb5de0845 in PdfParser::parseDictionaryOrStream() () from /usr/lib/libstreamanalyzer.so.0                                 
#9  0xb5ddf92d in PdfParser::parseObjectStreamObject() () from /usr/lib/libstreamanalyzer.so.0                                 
#10 0xb5de10f2 in PdfParser::parseObjectStreamObjectDef() () from /usr/lib/libstreamanalyzer.so.0                              
#11 0xb5de1291 in PdfParser::parse(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0                          
#12 0xb5dd036c in PdfEndAnalyzer::analyze(Strigi::AnalysisResult&, Strigi::StreamBase<char>*) ()                               
   from /usr/lib/libstreamanalyzer.so.0                                                                                        
#13 0xb5db8dc2 in Strigi::StreamAnalyzerPrivate::analyze(Strigi::AnalysisResult&, Strigi::StreamBase<char>*) ()                
   from /usr/lib/libstreamanalyzer.so.0                                                                                        
#14 0xb5d9189d in Strigi::AnalysisResult::index(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0             
#15 0xb60de147 in Nepomuk::IndexScheduler::analyzeFile(QFileInfo const&, Strigi::StreamAnalyzer*) ()                           
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#16 0xb60df473 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#17 0xb60df695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#18 0xb60df695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#19 0xb60df695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#20 0xb60df695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
---Type <return> to continue, or q <return> to quit---                                                                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#21 0xb60dfcfd in Nepomuk::IndexScheduler::run() () from /usr/lib/kde4/nepomukstrigiservice.so                                 
#22 0xb7e7e902 in ?? () from /usr/lib/libQtCore.so.4                                                                           
#23 0xb7e2165c in start_thread () from /lib/libpthread.so.0                                                                    
#24 0xb70131fe in clone () from /lib/libc.so.6                                                                                 
(gdb) continue                                                                                                                 
Continuing.                                                                                                                    
[Thread 0xb3aeab70 (LWP 31403) exited]                                                                                         
[Thread 0xb42ebb70 (LWP 31402) exited]                                                                                         

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.                              
(gdb) attach 31410        
[...]
(gdb) continue                                                                                            
Continuing.                                                                                               

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb39c1b70 (LWP 31412)]        
0xb5c68507 in Strigi::AnalysisResult::writerData() const () from /usr/lib/libstreamanalyzer.so.0
(gdb) bt                                                                                        
#0  0xb5c68507 in Strigi::AnalysisResult::writerData() const () from /usr/lib/libstreamanalyzer.so.0
#1  0xb5c685bb in Strigi::AnalysisResult::addTriplet(std::string const&, std::string const&, std::string const&) ()
   from /usr/lib/libstreamanalyzer.so.0                                                                            
#2  0xb5cb1a18 in ID3V2ThroughAnalyzer::connectInputStream(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0
#3  0xb5c8fd5f in Strigi::StreamAnalyzerPrivate::analyze(Strigi::AnalysisResult&, Strigi::StreamBase<char>*) ()              
   from /usr/lib/libstreamanalyzer.so.0                                                                                      
#4  0xb5c69a28 in Strigi::AnalysisResult::indexChild(std::string const&, long, Strigi::StreamBase<char>*) ()                 
   from /usr/lib/libstreamanalyzer.so.0                                                                                      
#5  0xb5ca769e in PdfEndAnalyzer::handle(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0                  
#6  0xb5cb6c53 in PdfParser::handleSubStream(Strigi::StreamBase<char>*, std::string const&, int, int) ()                     
   from /usr/lib/libstreamanalyzer.so.0                                                                                      
#7  0xb5cb703a in PdfParser::handleSubStream(Strigi::StreamBase<char>*, std::string const&, int, int, bool, std::string const&)
    () from /usr/lib/libstreamanalyzer.so.0                                                                                    
#8  0xb5cb7845 in PdfParser::parseDictionaryOrStream() () from /usr/lib/libstreamanalyzer.so.0                                 
#9  0xb5cb692d in PdfParser::parseObjectStreamObject() () from /usr/lib/libstreamanalyzer.so.0                                 
#10 0xb5cb80f2 in PdfParser::parseObjectStreamObjectDef() () from /usr/lib/libstreamanalyzer.so.0                              
#11 0xb5cb8291 in PdfParser::parse(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0                          
#12 0xb5ca736c in PdfEndAnalyzer::analyze(Strigi::AnalysisResult&, Strigi::StreamBase<char>*) ()                               
   from /usr/lib/libstreamanalyzer.so.0                                                                                        
#13 0xb5c8fdc2 in Strigi::StreamAnalyzerPrivate::analyze(Strigi::AnalysisResult&, Strigi::StreamBase<char>*) ()                
   from /usr/lib/libstreamanalyzer.so.0                                                                                        
#14 0xb5c6889d in Strigi::AnalysisResult::index(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0             
#15 0xb5fb5147 in Nepomuk::IndexScheduler::analyzeFile(QFileInfo const&, Strigi::StreamAnalyzer*) ()                           
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#16 0xb5fb6473 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#17 0xb5fb6695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#18 0xb5fb6695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#19 0xb5fb6695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#20 0xb5fb6695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
---Type <return> to continue, or q <return> to quit---                                                                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#21 0xb5fb6cfd in Nepomuk::IndexScheduler::run() () from /usr/lib/kde4/nepomukstrigiservice.so                                 
#22 0xb7d55902 in ?? () from /usr/lib/libQtCore.so.4                                                                           
#23 0xb7cf865c in start_thread () from /lib/libpthread.so.0                                                                    
#24 0xb6eea1fe in clone () from /lib/libc.so.6                                                                                 
(gdb) bt                                                                                                                       
#0  0xb5c68507 in Strigi::AnalysisResult::writerData() const () from /usr/lib/libstreamanalyzer.so.0                           
#1  0xb5c685bb in Strigi::AnalysisResult::addTriplet(std::string const&, std::string const&, std::string const&) ()            
   from /usr/lib/libstreamanalyzer.so.0                                                                                        
#2  0xb5cb1a18 in ID3V2ThroughAnalyzer::connectInputStream(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0  
#3  0xb5c8fd5f in Strigi::StreamAnalyzerPrivate::analyze(Strigi::AnalysisResult&, Strigi::StreamBase<char>*) ()                
   from /usr/lib/libstreamanalyzer.so.0                                                                                        
#4  0xb5c69a28 in Strigi::AnalysisResult::indexChild(std::string const&, long, Strigi::StreamBase<char>*) ()                   
   from /usr/lib/libstreamanalyzer.so.0                                                                                        
#5  0xb5ca769e in PdfEndAnalyzer::handle(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0                    
#6  0xb5cb6c53 in PdfParser::handleSubStream(Strigi::StreamBase<char>*, std::string const&, int, int) ()                       
   from /usr/lib/libstreamanalyzer.so.0                                                                                        
#7  0xb5cb703a in PdfParser::handleSubStream(Strigi::StreamBase<char>*, std::string const&, int, int, bool, std::string const&)
    () from /usr/lib/libstreamanalyzer.so.0                                                                                    
#8  0xb5cb7845 in PdfParser::parseDictionaryOrStream() () from /usr/lib/libstreamanalyzer.so.0                                 
#9  0xb5cb692d in PdfParser::parseObjectStreamObject() () from /usr/lib/libstreamanalyzer.so.0                                 
#10 0xb5cb80f2 in PdfParser::parseObjectStreamObjectDef() () from /usr/lib/libstreamanalyzer.so.0                              
#11 0xb5cb8291 in PdfParser::parse(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0                          
#12 0xb5ca736c in PdfEndAnalyzer::analyze(Strigi::AnalysisResult&, Strigi::StreamBase<char>*) ()                               
   from /usr/lib/libstreamanalyzer.so.0                                                                                        
#13 0xb5c8fdc2 in Strigi::StreamAnalyzerPrivate::analyze(Strigi::AnalysisResult&, Strigi::StreamBase<char>*) ()                
   from /usr/lib/libstreamanalyzer.so.0                                                                                        
#14 0xb5c6889d in Strigi::AnalysisResult::index(Strigi::StreamBase<char>*) () from /usr/lib/libstreamanalyzer.so.0             
#15 0xb5fb5147 in Nepomuk::IndexScheduler::analyzeFile(QFileInfo const&, Strigi::StreamAnalyzer*) ()                           
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#16 0xb5fb6473 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#17 0xb5fb6695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#18 0xb5fb6695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#19 0xb5fb6695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#20 0xb5fb6695 in Nepomuk::IndexScheduler::updateDir(QString const&, Strigi::StreamAnalyzer*, bool) ()                         
---Type <return> to continue, or q <return> to quit---                                                                         
   from /usr/lib/kde4/nepomukstrigiservice.so                                                                                  
#21 0xb5fb6cfd in Nepomuk::IndexScheduler::run() () from /usr/lib/kde4/nepomukstrigiservice.so                                 
#22 0xb7d55902 in ?? () from /usr/lib/libQtCore.so.4                                                                           
#23 0xb7cf865c in start_thread () from /lib/libpthread.so.0                                                                    
#24 0xb6eea1fe in clone () from /lib/libc.so.6                                                                                 
(gdb) quit                                                                                                                     
A debugging session is active.                                                                                                 

        Inferior 2 [process 31410] will be detached.

Quit anyway? (y or n) y
Detaching from program: /usr/bin/nepomukservicestub, process 31410
Quitting: ptrace: No such process.
Comment 1 Sebastian Trueg 2009-10-08 12:24:13 UTC
Created attachment 37446 [details]
A workaround to not crash

This patch applies to kdebase/runtime/nepomuk/strigibackend and ensures that the service does not crash. It does not really solve the problem (since I have no idea yet what the problem is) but works around it.
Please see if it helps. Sadly it was not backported to KDE 4.3.2.
Comment 2 mutlu inek 2009-10-09 01:29:56 UTC
Thanks for the patch!

I applied the patch and rebuilt kdebase-runtime. Strigi has been running for several hours now and it has not crashed once. :) I will report back if I do encounter any problems.
Comment 3 Nicolas L. 2009-11-23 15:47:19 UTC
closing as it works now ( comment  #2 ) .

Please reopen if any pbs appear back