undici icon indicating copy to clipboard operation
undici copied to clipboard

Failing node 24 on macos

Open Uzlopak opened this issue 4 months ago • 8 comments

@metcoder95

Can it be that your last PR regarding http2 broke on macos and node24?

Uzlopak avatar Sep 18 '25 15:09 Uzlopak

Hard to say, seems related with set-cookies but possible some connect timeout; have we tried to isolate it?

metcoder95 avatar Sep 19 '25 08:09 metcoder95

The thing is, that before it was only node20. but now node 24 ci times out, meaning it does not close properly.

Seems related to

test at test/http2.js:567:1
✖ Dispatcher#Connect (393.716833ms)
  Error [ERR_HTTP2_STREAM_ERROR]: Stream closed with error code NGHTTP2_INTERNAL_ERROR
      at ClientHttp2Stream._destroy (node:internal/http2/core:2472:13)
      at _destroy (node:internal/streams/destroy:122:10)
      at ClientHttp2Stream.destroy (node:internal/streams/destroy:84:5)
      at Writable.destroy (node:internal/streams/writable:1122:11)
      at Http2Stream.onStreamClose (node:internal/http2/core:597:12) {
    code: 'ERR_HTTP2_STREAM_ERROR'
  }

test at test/http2.js:1:1
✖ test/http2.js (30002.941292ms)

Probably a http2.js not closing a server or so, so the test hangs.

Uzlopak avatar Sep 19 '25 10:09 Uzlopak

I'll be trying to debug it but so far seems like a side effect coming from another source; cannot reproduce it in local with v24 and v22 and it seems like a re-run fix it.

Let's keep the issue open until sorting it out

metcoder95 avatar Sep 21 '25 09:09 metcoder95

Yes, it is very hard to reproduce. I am investigating core and looking for some kind of potential race condition. No luck till now.

Do you have a mac?

Sometimes you can reproduce such a bug by calling the script in bash script over and over. Maybe even setting the performance to low, maybe radically run prime95, hahaha.

Also another thing: github runners labeled with macos-latest are using arm64 or whatever the m1/2/3/4 chips are. Github runners with macos-13 label are using intel cpus. But I guess we dont compile nodejs for amd64.

Well, idk...

Uzlopak avatar Sep 21 '25 12:09 Uzlopak

Yeah, I've a Mac, I've been trying to do it for a while but if it happens until the 1000th time, it might be an inconsistency on the OS then; I will still keep an eye on it and see if I can find a way to reproduce it consistently.

But I guess we dont compile nodejs for amd64.

Do you mean in the CI or Node binaries itself?

metcoder95 avatar Sep 22 '25 08:09 metcoder95

i mean compiling node 20 for macos on intel.

Anyhow:

I merged #4561, so now we can a little bit better investigate

Try to run test/http2-dispatcher.js with bun with bun test ./test/http2-dispatcher.js

I think this is the same issue we have on mac.

I already created #4564, to pass the bun issue.

So basically goAway is already setting the socket to null, so close can not process it properly.

But I lack knowledge regarding http2, so it feels like looking for the needle in the haystack.

I assume that if we get the problem solved for bun, we will also solve it for macos.

Uzlopak avatar Sep 22 '25 09:09 Uzlopak

Let me take a look at it, thanks for that, it will definitely make things easier!

metcoder95 avatar Sep 22 '25 10:09 metcoder95

@metcoder95

Sry, i was inprecise in my words. One of the issues in bun is solved with not setting socket to null in goaway but there is still an issue in bun.

Uzlopak avatar Sep 22 '25 10:09 Uzlopak