[sword-devel] osis2mod segfault

Manfred Bergmann bergmannmd at web.de
Sun Jul 5 06:09:39 MST 2009


I've tried to debug it so here comes some more information.

The function stacktrace is like this:
main()
processOSIS()
handleToken()
sword::ListKey::increment()
sword::SWKey::operator++
sword::VerseKey::increment()
sword::VerseKey::Index()
[snip...]
around 130000 of those recursive calls in:
----
initBounds();
if (i > upperBound) {
=>	i = Index(upperBound);
	error = KEYERR_OUTOFBOUNDS;
----
looks like upperBound doesn't get initialized correctly so that  
another call to Index() happens.
[snap...]
sword::VerseKey::initBounds()
sword::SWKey::setLocale()
sword::stdstr()

in stdstr() a EXC_BAD_ACCESS signal is raised here:
delete [] *ipstr;

I believe this problem is because the stack is full due to the depth  
of the recursion.
The question is why is this recursion happening and why is upperBound  
not initialized correctly.

The program runs fine until book Joel. Those are the last lines  
console lines with debug flag 1|256:
-----------
DEBUG(WRITE): Joel.3.2:Joel.3.2: Sogar über die Sklaven und Sklavinnen  
werde ich dann meinen Geist ausgießen.
DEBUG(WRITE): Joel.3.3:Joel.3.3: Am Himmel und auf der Erde werde ich  
wunderbare Zeichen wirken: Blut, Feuer und Rauchwolken.
DEBUG(STACK): Joel.3.5: push (4) note
DEBUG(STACK): Joel.3.5: pop(4) note
DEBUG(WRITE): Joel.3.4:Joel.3.4: Die Sonne wird sich in Finsternis  
verwandeln und der Mond in Blut, bevor der große und furchtbare Tag  
Jahwes kommt.
DEBUG(WRITE): Joel.3.5:Joel.3.5: Dann wird jeder, der den Namen Jahwes  
anruft, gerettet werden <note n="1" osisID="Joel.3.5!1" osisRef="Joel. 
3.5">Die Verse 1-5 werden von Petrus während seiner Pfingstpredigt  
zitiert (). Vers 5 wird außerdem von Pauluszitiert.</note>, denn auf  
dem Berg Zion und in Jerusalem wird es Rettung geben, wie Jahwe  
angekündigt hat. Bewahrt wird jeder, den Jahwe beruft.  <chapter  
eID="gen23315" osisID="Joel.3"/>
-----------

Any ideas?


Manfred


Am 04.07.2009 um 19:52 schrieb Manfred Bergmann:

> Hi.
>
> While creating an update of a module I encountered a segmentation  
> fault of osis2mod build of the latest svn HEAD.
> What do I need to do to help fix it?
>
> That's the backtrace of gdb:
> (gdb) bt
> #0  0x946bb42c in szone_free ()
> #1  0x946bb38d in free ()
> #2  0x00206a0d in sword::stdstr ()
> #3  0x001f9c4f in sword::SWKey::setLocale ()
> #4  0x001ffd04 in sword::VerseKey::initBounds ()
> #5  0x00203f25 in sword::VerseKey::Index ()
>
> sword::VerseKey::Index() is repeated until you press CTRL-C.
> The seg fault might be because of a recursion problem which makes  
> the stack full?
>
>
> Manfred
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page




More information about the sword-devel mailing list