On Wed, Mar 29, 2023 at 3:07 PM Denys Vlasenko <vda.li...@googlemail.com> wrote:
> On Wed, Mar 1, 2023 at 12:01 PM alice <al...@ayaya.dev> wrote:
> > On Tue Feb 28, 2023 at 11:17 PM CET,  wrote:
> > > I'm having an intermittent issue with "BusyBox v1.36.0 (2023-01-03 
> > > 22:49:12
> > > UTC)" (the one from the Docker image busybox:musl) when running on amd64 
> > > GitHub
> > > actions runner VMs (azure).
> > >
> > > When I use sha256sum it is getting terminated with SIGILL, Illegal
> > > instruction. The issue is hard to reproduce but I have a GitHub actions 
> > > CI/CD
> > > job that I can re-run repeatedly (no changes to code, environment, data 
> > > input,
> > > etc) that will occasionally have the issue. I managed to capture a core 
> > > dump.
> >
> > this was also reported in 
> > http://lists.busybox.net/pipermail/busybox/2023-January/090113.html
> >
> > it's caused by having a cpu with AVX512 (the github runners do) but not 
> > sha_ni,
> > and the code that checks it is broken and misdetects sha_ni support when 
> > avx512
> > exists. the github runners don't have sha_ni, so it breaks exactly there.
>
> The code is:
>
>                 if (!shaNI) {
>                         unsigned eax = 7, ebx = ebx, ecx = 0, edx = edx;
>                         cpuid(&eax, &ebx, &ecx, &edx);
>                         shaNI = ((ebx >> 29) << 1) - 1;
>                 }
>                 if (shaNI > 0)
>                         ctx->process_block = sha1_process_block64_shaNI;
>
> If ebx's bit 29 is set, then shaNI = 1. If it is clear, then shaNI = -1.

...aaaand this is not true! The bits 30,31 also will affect the result,
need to be masked out! For example this way:

                           shaNI = ((ebx >> 28) & 2) - 1;

Sorry...
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to