Skip to content

Commit cbb3627

Browse files
aduh95RafaelGSS
authored andcommitted
util: fix inspecting error with a throwing getter for cause
PR-URL: #47163 Reviewed-By: Moshe Atlow <[email protected]> Reviewed-By: Yagiz Nizipli <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Chengzhong Wu <[email protected]>
1 parent 2192b5b commit cbb3627

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

lib/internal/util/inspect.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -1243,9 +1243,16 @@ function getStackString(error) {
12431243
function getStackFrames(ctx, err, stack) {
12441244
const frames = StringPrototypeSplit(stack, '\n');
12451245

1246+
let cause;
1247+
try {
1248+
({ cause } = err);
1249+
} catch {
1250+
// If 'cause' is a getter that throws, ignore it.
1251+
}
1252+
12461253
// Remove stack frames identical to frames in cause.
1247-
if (err.cause && isError(err.cause)) {
1248-
const causeStack = getStackString(err.cause);
1254+
if (cause != null && isError(cause)) {
1255+
const causeStack = getStackString(cause);
12491256
const causeStackStart = StringPrototypeIndexOf(causeStack, '\n at');
12501257
if (causeStackStart !== -1) {
12511258
const causeFrames = StringPrototypeSplit(StringPrototypeSlice(causeStack, causeStackStart + 1), '\n');

test/message/util-inspect-error-cause.js

+6
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,9 @@ process.nextTick(() => {
4646
console.log(inspect(cause3));
4747
console.log(inspect(error2));
4848
});
49+
50+
{
51+
const error = new Error('cause that throws');
52+
Reflect.defineProperty(error, 'cause', { get() { throw new Error(); } });
53+
console.log(inspect(error));
54+
}

test/message/util-inspect-error-cause.out

+10
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ Error: undefined cause
3333
at * {
3434
[cause]: undefined
3535
}
36+
Error: cause that throws
37+
at *
38+
at *
39+
at *
40+
at *
41+
at *
42+
at *
43+
at * {
44+
[cause]: [Getter]
45+
}
3646
RangeError: New Stack Frames
3747
at *
3848
*[90m at *[39m {

0 commit comments

Comments
 (0)