Re: Hang in futex wait with a Node.js binary in Linuxulator

From: Dmitry Chagin <dchagin_at_heemeyer.club>
Date: Thu, 18 Aug 2022 08:35:35 UTC
On Wed, Aug 17, 2022 at 09:45:57PM -0700, Alex Arslan wrote:
> Hi Dmitry, thanks for the help! Regarding the version, I've observed the hang on FreeBSD 12.2, 12.3, and 13.0. When looking at the kdump output, I see
> 
> linux_sys_futex(0x8427eeb70,0x80,0x2,0,0,0)
> 
> as the last output before the SIGINT I sent to stop the hang. If I understand correctly, this is the same as what I posted before—a futex waiting for the value 2 to be written to a process-private address—which would mean that the address the wake-up missed was 0x8427eeb70, the first argument to the call. Is that right? There is no wake-up sent though. I looked for that address in the full kdump output and didn't find it, and I'm not sure what else to be looking for. Apologies if I'm missing something obvious here, I'm quite new to this kind of debugging.
> 

yes, you are right. if possible, upgrade to stable/13, it is the same as
the -current. I checked stable/13, it's the same behaviour(




> > On Aug 17, 2022, at 12:28 AM, Dmitry Chagin <dchagin@heemeyer.club> wrote:
> > 
> > On Mon, Aug 15, 2022 at 09:43:29PM -0700, Alex Arslan wrote:
> >> Hi folks,
> >> 
> >> I'm trying to run the Linux binary for Codecov's official coverage uploader (https://docs.codecov.com/docs/codecov-uploader <ihttps://docs.codecov.com/docs/codecov-uploader>) on FreeBSD via Linuxulator. It's a statically compiled Node.js application built with the Node.js package called pkg. The application's own verbose logging shows that it completes, but the process just hangs indefinitely, using 0 CPU and not letting go of its memory. With devel/linux-c7-strace, it appears it's getting stuck on:
> >> 
> >> futex(0x8427f1b70, FUTEX_WAIT_PRIVATE, 2, NULL
> >> 
> >> Too stuck to even finish printing the argument list or closing parenthesis, apparently! A Cirrus CI build log where I set the process to terminate via timeout is available at https://cirrus-ci.com/task/6610515924353024 <https://cirrus-ci.com/task/6610515924353024> but it's actually reproducible for me locally with just
> >> 
> >> curl -O https://uploader.codecov.io/latest/linux/codecov
> >> chmod +x codecov
> >> ./codecov -h
> >> 
> >> Does anyone have any advice for how to debug this further?
> >> 
> > 
> > hi, mostly by ktrace -di/kdump -HAR and see which uaddr wake-up missed,
> > which freebsd version you are used?
> > 
> 
>