nodejs / node

Node.js JavaScript runtime ✨🐢🚀✨
https://nodejs.org
Other
106.82k stars 29.16k forks source link

Loading long env value from a file is crashing Node on Windows #52248

Closed kibertoad closed 5 months ago

kibertoad commented 6 months ago

Version

20.12.0

Platform

Windows 11

Subsystem

process

What steps will reproduce the bug?

Try loading .env file with the following entry in it:

JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzi4k4ful8Q65RWbHvZwD
jKNfspb89typkUATf8KXlYcWp6ibUG9nKpYrig3jmlCdMvCm+S7kZedACshFyRmm
1ocaWjRIt/jJyzntxnMIgWetTedZXXzlFbparDMrdEMmsPbM7LrByCU57iKloZEl
BhOSQZk/JbJK1YpozTCxcs28YlpnTuMBaXvXddrQuNHo+HYhK53XlFXyiOBzmEFY
cBrVqptdjA3z7uNNd6A4IAfEkRYp4lZxZgwTPyjYZ1oXmhalvbr6OAs9ujLIZPSM
QoP1VoHLdOqrs7QTmi2rrNCfIcFkFp02N39TovMm9zZQJjQvFEJqIKe4db2457vr
uJ5qxkWmbBu+/tf6ytKfbiA433neLSvpfquPXbq3OLGzJ4H2YHiHa0ddfUCqdN49
t5nCPEMp6OTa5kXuwObf8yvHyoP8HgQQD+/sftHUIE/1sdQ6fzB/9L+smzp5SW/X
nI8NY0k1SH9MLlweGuXi6M1jS62kPWk4HTDQmiqUTImcG0XYRrVd5ISXPdfnVgnq
KKht+SUmkPrfaWMDc21FsXXmmVSRTjvBhA6Cy6PLPzGZaeA4TVkOZUkp1OvcyfiI
HixuZca1OASxGeUM8lcPi9my8TJCtw5ZR0M/uqVV/1o3U0nx+U5z54ulWN9leMLY
vgv+lGrqfFWRemajGXSm8L0CAwEAAQ==
-----END PUBLIC KEY-----"

by running this code:

import { loadEnvFile } from 'node:process'

loadEnvFile('./.env')

This fails with an error Process finished with exit code -1073740791 (0xC0000409)

How often does it reproduce? Is there a required condition?

It is always reproduceable

What is the expected behavior? Why is that the expected behavior?

The value should be loaded correctly. This works with dotenv.

What do you see instead?

An error Process finished with exit code -1073740791 (0xC0000409)

Additional information

No response

kibertoad commented 6 months ago

Related to https://github.com/nodejs/node/pull/51289

kibertoad commented 6 months ago

@IlyasShabi Maybe you have thoughts on this?

mertcanaltin commented 6 months ago

@IlyasShabi Maybe you have thoughts on this?

I have opened a pr aimed at solving this problem

IlyasShabi commented 6 months ago

@mertcanaltin thanks for sending a PR I will review it asap

IlyasShabi commented 6 months ago

@mertcanaltin @kibertoad Have you tried to reproduce it on a mac os? I'm unable to reproduce it on my end 🤔 it might be related to Windows maybe

anonrig commented 6 months ago

I couldn't reproduce it. Also, you don't need to call node:process since process is a global variable:

node on  main via ⬢ v21.7.1
❯ cat .env
JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzi4k4ful8Q65RWbHvZwD
jKNfspb89typkUATf8KXlYcWp6ibUG9nKpYrig3jmlCdMvCm+S7kZedACshFyRmm
1ocaWjRIt/jJyzntxnMIgWetTedZXXzlFbparDMrdEMmsPbM7LrByCU57iKloZEl
BhOSQZk/JbJK1YpozTCxcs28YlpnTuMBaXvXddrQuNHo+HYhK53XlFXyiOBzmEFY
cBrVqptdjA3z7uNNd6A4IAfEkRYp4lZxZgwTPyjYZ1oXmhalvbr6OAs9ujLIZPSM
QoP1VoHLdOqrs7QTmi2rrNCfIcFkFp02N39TovMm9zZQJjQvFEJqIKe4db2457vr
uJ5qxkWmbBu+/tf6ytKfbiA433neLSvpfquPXbq3OLGzJ4H2YHiHa0ddfUCqdN49
t5nCPEMp6OTa5kXuwObf8yvHyoP8HgQQD+/sftHUIE/1sdQ6fzB/9L+smzp5SW/X
nI8NY0k1SH9MLlweGuXi6M1jS62kPWk4HTDQmiqUTImcG0XYRrVd5ISXPdfnVgnq
KKht+SUmkPrfaWMDc21FsXXmmVSRTjvBhA6Cy6PLPzGZaeA4TVkOZUkp1OvcyfiI
HixuZca1OASxGeUM8lcPi9my8TJCtw5ZR0M/uqVV/1o3U0nx+U5z54ulWN9leMLY
vgv+lGrqfFWRemajGXSm8L0CAwEAAQ==
-----END PUBLIC KEY-----"

node on  main via ⬢ v21.7.1
❯ cat hello.js
process.loadEnvFile('./.env');
console.log(process.env.JWT_PUBLIC_KEY);

node on  main via ⬢ v21.7.1
❯ node hello.js
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzi4k4ful8Q65RWbHvZwD
jKNfspb89typkUATf8KXlYcWp6ibUG9nKpYrig3jmlCdMvCm+S7kZedACshFyRmm
1ocaWjRIt/jJyzntxnMIgWetTedZXXzlFbparDMrdEMmsPbM7LrByCU57iKloZEl
BhOSQZk/JbJK1YpozTCxcs28YlpnTuMBaXvXddrQuNHo+HYhK53XlFXyiOBzmEFY
cBrVqptdjA3z7uNNd6A4IAfEkRYp4lZxZgwTPyjYZ1oXmhalvbr6OAs9ujLIZPSM
QoP1VoHLdOqrs7QTmi2rrNCfIcFkFp02N39TovMm9zZQJjQvFEJqIKe4db2457vr
uJ5qxkWmbBu+/tf6ytKfbiA433neLSvpfquPXbq3OLGzJ4H2YHiHa0ddfUCqdN49
t5nCPEMp6OTa5kXuwObf8yvHyoP8HgQQD+/sftHUIE/1sdQ6fzB/9L+smzp5SW/X
nI8NY0k1SH9MLlweGuXi6M1jS62kPWk4HTDQmiqUTImcG0XYRrVd5ISXPdfnVgnq
KKht+SUmkPrfaWMDc21FsXXmmVSRTjvBhA6Cy6PLPzGZaeA4TVkOZUkp1OvcyfiI
HixuZca1OASxGeUM8lcPi9my8TJCtw5ZR0M/uqVV/1o3U0nx+U5z54ulWN9leMLY
vgv+lGrqfFWRemajGXSm8L0CAwEAAQ==
-----END PUBLIC KEY-----
anonrig commented 6 months ago

I couldn't reproduce it on main branch as well.

kibertoad commented 6 months ago

@anonrig @IlyasShabi I can confirm that this only happens in Windows. E. g. https://github.com/lokalise/node-service-template/actions/runs/8491928125/job/23264398029?pr=536 is green, but same tests are failing locally for me.

anonrig commented 6 months ago

I reproduced this on Node.js Windows CI

mertcanaltin commented 5 months ago

Would it be a good idea to process the values by chunking them?

kibertoad commented 5 months ago

@IlyasShabi Was the fix included in 22.0.0? I've tried running it, and it's still crashing with the same error when trying to load this value:

JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzi4k4ful8Q65RWbHvZwD
jKNfspb89typkUATf8KXlYcWp6ibUG9nKpYrig3jmlCdMvCm+S7kZedACshFyRmm
1ocaWjRIt/jJyzntxnMIgWetTedZXXzlFbparDMrdEMmsPbM7LrByCU57iKloZEl
BhOSQZk/JbJK1YpozTCxcs28YlpnTuMBaXvXddrQuNHo+HYhK53XlFXyiOBzmEFY
cBrVqptdjA3z7uNNd6A4IAfEkRYp4lZxZgwTPyjYZ1oXmhalvbr6OAs9ujLIZPSM
QoP1VoHLdOqrs7QTmi2rrNCfIcFkFp02N39TovMm9zZQJjQvFEJqIKe4db2457vr
uJ5qxkWmbBu+/tf6ytKfbiA433neLSvpfquPXbq3OLGzJ4H2YHiHa0ddfUCqdN49
t5nCPEMp6OTa5kXuwObf8yvHyoP8HgQQD+/sftHUIE/1sdQ6fzB/9L+smzp5SW/X
nI8NY0k1SH9MLlweGuXi6M1jS62kPWk4HTDQmiqUTImcG0XYRrVd5ISXPdfnVgnq
KKht+SUmkPrfaWMDc21FsXXmmVSRTjvBhA6Cy6PLPzGZaeA4TVkOZUkp1OvcyfiI
HixuZca1OASxGeUM8lcPi9my8TJCtw5ZR0M/uqVV/1o3U0nx+U5z54ulWN9leMLY
vgv+lGrqfFWRemajGXSm8L0CAwEAAQ==
-----END PUBLIC KEY-----"
IlyasShabi commented 5 months ago

@kibertoad According to this https://github.com/nodejs/node/releases/tag/v22.0.0 I think it was not released

kibertoad commented 5 months ago

Gotcha, thanks! Here's hoping it will be included into subsequent releases. As it wasn't a semver major, it should be possible to include it at any point.