On 2022-03-17 Jia Tan wrote:
> I attached two patches to this message. The first should fix a bug
> with the timeouts.
Thanks! This and the deadlock are now fixed (I committed them a few days
ago).
> The second patch is for the memlimit_threading update. I added a new
> API function that will fail for anything that is not the multithreaded
> decoder.
I need to consider this a little later. Some of the things I will do
next (some already have a patch on this list):
- Add fail-fast flag to lzma_stream_decoder_mt().
- Possibly fix a corner case in threaded coder if lzma_code() is
called in a similar way as in zpipe.c in in
<https://zlib.net/zlib_how.html>. That is, currently it doesn't
work but it can be made to work, I think. Supporting it makes
threaded decoder a little easier to adapt to existing apps if they
use that kind of decoding loop.
- --memlmit-threading, I wrote this weeks ago except a few details
that need to be decided. For example, I guess -M should set
--memlimit-threading just like it sets --memlimit-compress and
--memlimit-decompress.
- Initial version of automatic memlimit with --threads=0. First
version can be based on lzma_physmem() but other methods can be
added. Sebastian's patch uses MemAvailable on Linux, your patch
uses freemem from sysinfo() which equals MemFree in /proc/meminfo.
I suppose MemAvailable is a better starting point.
- Support for forcing single/multi-threaded mode with --threads for
cases when xz decides to use only one thread.
- Fix changing memlimit after LZMA_MEMLIMIT_ERROR in the old
single-threaded decoder. (I knew it's a rare use case but clearly
it's not a use case at all since I haven't seen bug reports.)
- Your test framework patches
I suppose then the next alpha release is close to ready.
--
Lasse Collin