redoc
redoc copied to clipboard
preview-docs with Stripe's OpenAPI will hang Firefox
Describe the bug
Running redocly preview-docs openapi.yaml with the Stripe OpenAPI causes firefox to freeze when I load up the URL in the browser.
To Reproduce Steps to reproduce the behavior:
- Given no config
- And this OpenAPI file(s): https://api.apis.guru/v2/specs/stripe.com/2022-11-15/openapi.yaml
- Run this command with these arguments:
redocly preview-docs openapi.yaml - Open http://127.0.0.1:8080
- After a long wait Firefox will ask if you'd like to give up.
Expected behavior
Should load up.
Logs
Redocly Version(s)
1.0.2
Node.js Version(s)
18.15.0
Additional context
Firefox version 116.0.2.
Build also fails.
Found undefined and using theme.openapi options
Prerendering docs
<--- Last few GCs --->
[56218:0x140078000] 7203 ms: Scavenge 2023.8 (2075.5) -> 2020.5 (2077.0) MB, 3.0 / 0.0 ms (average mu = 0.448, current mu = 0.348) allocation failure;
[56218:0x140078000] 7215 ms: Scavenge 2025.0 (2077.0) -> 2022.5 (2080.0) MB, 8.7 / 0.0 ms (average mu = 0.448, current mu = 0.348) allocation failure;
[56218:0x140078000] 7432 ms: Scavenge 2028.1 (2080.0) -> 2025.2 (2097.8) MB, 213.1 / 0.0 ms (average mu = 0.448, current mu = 0.348) allocation failure;
<--- JS stacktrace --->
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
1: 0x1026ad49c node::Abort() [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
2: 0x1026ad68c node::ModifyCodeGenerationFromStrings(v8::Local<v8::Context>, v8::Local<v8::Value>, bool) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
3: 0x10280626c v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
4: 0x1029b11f8 v8::internal::EmbedderStackStateScope::EmbedderStackStateScope(v8::internal::Heap*, v8::internal::EmbedderStackStateScope::Origin, cppgc::EmbedderStackState) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
5: 0x1029afcdc v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
6: 0x1029a3f84 v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
7: 0x1029a47b4 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
8: 0x10298a5e8 v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
9: 0x102d1a408 v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
10: 0x10306504c Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
11: 0x10303b300 Builtins_MapConstructor [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
12: 0x102fed914 Builtins_JSBuiltinsConstructStub [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
13: 0x107d0b33c
14: 0x107d09950
15: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
16: 0x107d6214c
17: 0x107d5bc84
18: 0x107d09e60
19: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
20: 0x107d6214c
21: 0x107d5bc84
22: 0x107d30700
23: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
24: 0x107d6c710
25: 0x107d5ba48
26: 0x107d09e60
27: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
28: 0x107d6214c
29: 0x107d5bc84
30: 0x107d30700
31: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
32: 0x107d6c710
33: 0x107d5ba48
34: 0x107d09e60
35: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
36: 0x107d6214c
37: 0x107d5bc84
38: 0x107d30700
39: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
40: 0x107d6c710
41: 0x107d5ba48
42: 0x107d09e60
43: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
44: 0x107d6214c
45: 0x107d5bc84
46: 0x107d30700
47: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
48: 0x107d5c08c
49: 0x107d09e60
50: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
51: 0x107d6214c
52: 0x107d5bc84
53: 0x107d09e60
54: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
55: 0x107d6214c
56: 0x107d5bc84
57: 0x107d30700
58: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
59: 0x107d6c710
60: 0x107d5ba48
61: 0x107d2a048
62: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
63: 0x107d6214c
64: 0x107d5bc84
65: 0x107d30700
66: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
67: 0x107d6c710
68: 0x107d5ba48
69: 0x107d2a048
70: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
71: 0x107d6214c
72: 0x107d5bc84
73: 0x107d2a048
74: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
75: 0x107d6214c
76: 0x107d5bc84
77: 0x107d30700
78: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
79: 0x107d6c710
80: 0x107d5ba48
81: 0x107d2a048
82: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
83: 0x107d6214c
84: 0x107d5bc84
85: 0x107d30700
86: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
87: 0x107d6c710
88: 0x107d5ba48
89: 0x107d2a048
90: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
91: 0x107d2e6a8
92: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
93: 0x107d1cab4
94: 0x107d0e5b4
95: 0x107b15024
96: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
97: 0x107d1dc14
98: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
99: 0x107d1f000
100: 0x107d0e444
101: 0x107b15024
102: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
103: 0x107b0ce2c
104: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
105: 0x107d10368
106: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
107: 0x107d1cab4
108: 0x107d0e5b4
109: 0x107b15024
110: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
111: 0x107d1dc14
112: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
113: 0x107d1f000
114: 0x107d0e444
115: 0x107b15024
116: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
117: 0x107b0ce2c
118: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
119: 0x107d10368
120: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
121: 0x107d1cab4
122: 0x107d0e5b4
123: 0x107b15024
124: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
125: 0x107b0ce2c
126: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
127: 0x107d10368
128: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
129: 0x107d1cab4
130: 0x107d0e5b4
131: 0x107b15024
132: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
133: 0x107d1dc14
134: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
135: 0x107d1f000
136: 0x107d0e444
137: 0x107b15024
138: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
139: 0x107b0ce2c
140: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
141: 0x107d10368
142: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
143: 0x107d1cab4
144: 0x107d0e5b4
145: 0x107b15024
146: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
147: 0x107b0ce2c
148: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
149: 0x107d10368
150: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
151: 0x107d1cab4
152: 0x107d0e5b4
153: 0x107b15024
154: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
155: 0x107d1dc14
156: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
157: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
158: 0x107d0e444
159: 0x107b15024
160: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
161: 0x107b0ce2c
162: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
163: 0x107d10368
164: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
165: 0x107d1cab4
166: 0x107d0e5b4
167: 0x107b15024
168: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
169: 0x107d1dc14
170: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
171: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
172: 0x107d0e444
173: 0x107b15024
174: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
175: 0x107d0e990
176: 0x107b15024
177: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
178: 0x107b0ce2c
179: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
180: 0x107d10368
181: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
182: 0x107d1cab4
183: 0x107d0e5b4
184: 0x107b15024
185: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
186: 0x107b0ce2c
187: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
188: 0x107d10368
189: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
190: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
191: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
192: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
193: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
194: 0x1030fab98 Builtins_ConstructHandler [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
195: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
196: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
197: 0x1030fab98 Builtins_ConstructHandler [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
198: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
199: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
200: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
201: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
202: 0x1030fab98 Builtins_ConstructHandler [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
203: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
204: 0x102fed700 construct_stub_create_deopt_addr [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
205: 0x1030fab98 Builtins_ConstructHandler [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
206: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
207: 0x103083eec Builtins_ArrayMap [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
208: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
209: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
210: 0x102ffb000 Builtins_LoadIC_NoFeedback [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
211: 0x1030f1644 Builtins_GetNamedPropertyHandler [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
212: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
213: 0x107c6b5ec
214: 0x107c555a0
215: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
216: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
217: 0x1030240d0 Builtins_GeneratorPrototypeNext [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
218: 0x102ff0198 Builtins_InterpreterEntryTrampoline [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
219: 0x1030b0738 Builtins_PromiseFulfillReactionJob [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
220: 0x103013c4c Builtins_RunMicrotasks [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
221: 0x102fee3a4 Builtins_JSRunMicrotasksEntry [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
222: 0x10293299c v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
223: 0x102932e8c v8::internal::(anonymous namespace)::InvokeWithTryCatch(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
224: 0x102933068 v8::internal::Execution::TryRunMicrotasks(v8::internal::Isolate*, v8::internal::MicrotaskQueue*, v8::internal::MaybeHandle<v8::internal::Object>*) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
225: 0x1029597b4 v8::internal::MicrotaskQueue::RunMicrotasks(v8::internal::Isolate*) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
226: 0x10295a04c v8::internal::MicrotaskQueue::PerformCheckpoint(v8::Isolate*) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
227: 0x1025fcc5c node::InternalCallbackScope::Close() [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
228: 0x1025fc7c4 node::InternalCallbackScope::~InternalCallbackScope() [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
229: 0x1026b0c78 node::fs::FileHandle::CloseReq::Resolve() [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
230: 0x1026c7918 node::fs::FileHandle::ClosePromise()::$_0::__invoke(uv_fs_s*) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
231: 0x1026a98a4 node::MakeLibuvRequestCallback<uv_fs_s, void (*)(uv_fs_s*)>::Wrapper(uv_fs_s*) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
232: 0x102fcc1a4 uv__work_done [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
233: 0x102fcf94c uv__async_io [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
234: 0x102fe20f0 uv__io_poll [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
235: 0x102fcfe1c uv_run [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
236: 0x1025fd704 node::SpinEventLoop(node::Environment*) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
237: 0x1026ea3f8 node::NodeMainInstance::Run() [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
238: 0x10267a430 node::LoadSnapshotDataAndRun(node::SnapshotData const**, node::InitializationResult const*) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
239: 0x10267a6b4 node::Start(int, char**) [/Users/phil/.asdf/installs/nodejs/18.15.0/bin/node]
240: 0x18412fe50 start [/usr/lib/dyld]
[1] 56218 abort redocly build-docs source/stripe.yaml
At first, I thought the preview-docs fail is likely due to lack of pagination. But then I realized this wasn't paginated here:
However, I also realized I'm logged in; when I add the --use-community-edition this problem is reproduced.
You can also use a URL with preview docs: redocly preview-docs "https://api.apis.guru/v2/specs/stripe.com/2022-11-15/openapi.yaml" --use-community-edition
Also, I reproduced the build-docs failure:
redocly build-docs "https://api.apis.guru/v2/specs/stripe.com/2022-11-15/openapi.yaml"
Found undefined and using theme.openapi options
Prerendering docs
<--- Last few GCs --->
[21177:0x148078000] 14458 ms: Mark-sweep 4031.9 (4129.5) -> 4024.5 (4139.0) MB, 494.0 / 0.0 ms (average mu = 0.435, current mu = 0.176) allocation failure; scavenge might not succeed
[21177:0x148078000] 15414 ms: Mark-sweep 4040.5 (4139.0) -> 4031.7 (4145.5) MB, 946.2 / 0.0 ms (average mu = 0.200, current mu = 0.010) allocation failure; scavenge might not succeed
<--- JS stacktrace --->
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
...
Hi @philsturgeon! Thanks for your request. This is known issue from Redoc side - https://github.com/Redocly/redoc/issues/2383.
This might not be relevant but I noticed some unusual syntax in the Stripe OpenAPI file, using multiline YAML notation with $ref, so I thought I'd mention it, I don't think I've seen this elsewhere. Here's an example:
cash:
$ref: >-
#/components/schemas/bank_connections_resource_balance_api_resource_cash_balance