On Mon, Sep 28, 2015 at 4:17 AM, Rongqing Li <[email protected]> wrote: > > > On 2014年12月24日 13:53, Rich Felker wrote: >> >> On Wed, Dec 24, 2014 at 10:32:19AM +0800, yhu2 wrote: >>> >>> The script which triggers the leak: >>> >>> while true >>> do >>> while true >>> do >>> break; >>> done</dev/null >>> done >>> >>> someone had fixed this bug, the commit is: >>> >>> http://git.busybox.net/busybox/commit/shell/ash.c?id=4ba6c5d3ba3d2c7922aff6b5c2e73b8325f1cf17 >>> >>> but this commit results in crash running some shell scripts, so it was >>> reverted. >>> >>> >>> I am trying to resolve this defect,any commnent would be appreciated! >> >> >> There is no easy fix. The patch you sent is incorrect. The problem is >> that the "stack model" used for allocation in ash is semantically >> wrong, and needs to be replaced with a dependency-tree model or >> something else that can handle freeing one object without freeing all >> subsequently-allocated objects. >> >> As a workaround, it might be possible to code a hack to reuse the >> existing copy of the string on the allocation stack rather than >> allocating a new copy whenever an existing copy already exists. This >> would not solve the general case (e.g. when the redirection uses a >> different file on each iteration) but it would solve the case above, I >> think. It might be worth pursuing this approach if nobody is available >> to work on the proper fix in the near future. >>
Yes, unfortunately no one is willing to significantly rework ash.c code. Li, maybe you can use the other shell bbox has, hush? _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
