Open nemequ opened 8 years ago
From a quick glance at the code, it seems like it may be storing a 64-bit value into the 6 byte buffer seal_out
in squash_brotli.cpp
.
Yeah, that sounds right. AFAICT that would be a bug in brotli since s->remaining_out
is set to 6…
Yes, it looks like WriteMetadata
is checking if there is 6 bytes left, and then proceeds to write uint64_t
values with WriteBits
(on little endian).
I guess that means it probably isn't to blame for the stall on 64 bit windows :(
I did a quick test locally, and increasing the size of seal_out
to 16 bytes, so there is enough room for the memory writes, fixed flush crashing with the seed from the AppVeyor build you linked.
This of course isn't a fix for the actual issue, but indicates it may solve the AppVeyor build.
Ooops. Looks like there are some implicit requirements in encoder. Going to fix it soon.
Happens on F23 x86_64, but it's probably reproducible everywhere. This may (or may not) be related to the recent issues with brotli flushing on Win64 we have been seeing in AppVeyor.
@eustas, I was hoping you might want to take a look at this. I'm not sure whether the issue is in the Squash plugin or Brotli, but at this point I think most of the plugin is code you've written so you might want to know either way. If you want I can try to put together a test case which reproduces the issue without Squash and either file a bug against Brotli or, if it's an issue in Squash, look into fixing it myself.
Basically, do you want me to consider you the maintainer of the brotli plugin for squash, or just a contributor?