Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Recent /bin/sh breakage
On Nov 13, 3:39pm, gson%gson.org@localhost (Andreas Gustafsson) wrote:
-- Subject: Re: Recent /bin/sh breakage
| David Laight wrote:
| > > UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
| > > 0 471 344 13031 85 0 27644 23500 wait S+ tty00 0:01.15 sh
MAKEDEV -MM init
| >
| > Something must be leaking badly :-)
|
| Indeed, and I think I have found the reason for the leak. The sh
| arithmetic expression YACC parser contains a return statement in a
| parser action; this is a bad idea because it causes yyparse() to
| return without freeing the malloc'ed parser state. I will commit the
| following fix shortly.
|
| Index: src/bin/sh/arith.y
| ===================================================================
| RCS file: /bracket/repo/src/bin/sh/arith.y,v
| retrieving revision 1.18
| diff -u -r1.18 arith.y
| --- src/bin/sh/arith.y 25 Mar 2007 06:29:26 -0000 1.18
| +++ src/bin/sh/arith.y 12 Nov 2009 20:00:34 -0000
| @@ -83,7 +83,6 @@
| * the desired result elsewhere.
| */
| arith_result = $1;
| - return 0;
| }
| ;
|
Good catch! That must be a result of upgrading yacc and using malloc
on each yyparse call instead of re-using memory so that the parser can
be re-entrant!
Very nice!
christos
Home |
Main Index |
Thread Index |
Old Index