[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#5847: [Hubert Gosselmeyer] Re: bug#5847: ETAGS: Segmentation fault,
From: |
Eli Zaretskii |
Subject: |
bug#5847: [Hubert Gosselmeyer] Re: bug#5847: ETAGS: Segmentation fault, because of incorrect scope presumption |
Date: |
Wed, 31 Aug 2016 18:59:20 +0300 |
> Date: Sat, 20 Aug 2016 19:27:21 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 5847@debbugs.gnu.org, Hubert Gosselmeyer <gosselmeyer@googlemail.com>
>
> > Date: Sat, 20 Aug 2016 18:55:36 +0300
> > From: Eli Zaretskii <eliz@gnu.org>
> > Cc: 5847@debbugs.gnu.org
> >
> > That file blows up the runtime stack because of recursive calls to
> > put_entries when etags writes out the tree of nodes it collected.
> > Since recovery from stack overflow is inherently OS dependent and
> > unreliable, I don't see what we can do in this case. Even if we do
> > detect the upcoming stack overflow, the only thing we can do is print
> > an error message and quit.
>
> Actually, one way of avoiding stack overflow would be to use some BFS
> algorithm that allocates memory off the heap. Patches welcome.
I've done that now and committed the changes on the master branch.
The resulting etags successfully tagged a dozen of large source trees
together, whereas the original version crashed quite quickly. The
test file posted here also no longer causes a crash.
The non-recursive version is somewhat slower, so patches to speed it
up are welcome.
I'm closing this bug.