ladybird/Tests
sideshowbarker d7c08964cb LibJS: Throw rather than crashing on a deep prototype-chain get
Problem: Converting an object with a pathologically-deep prototype chain
to a primitive was segfaulting.

Cause: Object::internal_get implements [[Get]] by recursing into the
prototype’s [[Get]] (parent->internal_get) when the property isn’t an
own property. For a sufficiently deep prototype chain, that C++
recursion exhausts the native stack, and segfaults. The bytecode
interpreter’s call-stack limit doesn’t cover this native recursion.

Fix: Before recursing into the prototype in Object::internal_get, check
VM::did_reach_stack_space_limit(), and throw a CallStackSizeExceeded
InternalError — the same way the interpreter and other recursive runtime
operations guard the native stack. The deep-chain get now throws a
catchable call-stack-size-exceeded error, rather than crashing.

Fixes https://github.com/LadybirdBrowser/ladybird/issues/3584
2026-06-20 23:34:33 +02:00
..
AK AK: Remove custom deleters from OwnPtr 2026-06-13 22:49:15 +02:00
ClangPlugins LibGC: Default-construct RootHashMap from the global heap 2026-05-20 20:37:55 +02:00
LibCompress LibCompress: Remove PackBitsDecoder 2026-06-12 22:37:49 +02:00
LibCore LibThreading: Remove BackgroundAction 2026-06-05 20:00:12 +02:00
LibCrypto LibCrypto: Restore cached tag when a failed ASN1 read is rolled back 2026-06-09 08:02:44 +01:00
LibDatabase LibDatabase: Allow String values to contain embedded null bytes 2026-02-14 10:25:33 -05:00
LibDevTools LibDevTools+LibWeb: Let DevTools remove IndexedDB data 2026-06-19 14:25:39 +02:00
LibDiff AK: Remove unused include from MemoryStream 2026-02-17 12:38:51 +00:00
LibDNS Tests/LibDNS: Make TestDNSResolver independent of live DNS 2026-06-17 18:27:33 +02:00
LibGC LibGC: Add support for coordinated multi-heap collection 2026-06-19 17:01:47 +02:00
LibGfx LibGfx: Reject undersized backing storage when creating bitmaps 2026-06-19 13:43:07 +02:00
LibHTTP LibWeb: Preserve JS bytecode in memory cache 2026-06-06 09:15:09 +02:00
LibIPC LibIPC: Don’t dispatch queued messages when sync IPC peer disconnects 2026-05-24 10:00:31 +02:00
LibJS LibJS: Throw rather than crashing on a deep prototype-chain get 2026-06-20 23:34:33 +02:00
LibMedia LibMedia: Rename timing getters in AudioBlock 2026-06-06 19:58:17 -05:00
LibRegex LibRegex: Inline \w and \d ranges in legacy positive char classes 2026-04-21 16:36:38 +02:00
LibTest CMake: Rename serenity_* helper functions/macros to ladybird_* 2025-07-03 23:19:41 +02:00
LibTextCodec LibTextCodec: Make StreamingDecoder own decoder lookup 2026-06-20 21:56:43 +02:00
LibThreading LibThreading: Remove BackgroundAction 2026-06-05 20:00:12 +02:00
LibTLS Meta: Rename and merge some lagom_* and ladybird_* 2026-05-05 22:08:24 +02:00
LibUnicode LibUnicode: Add an ASCII fast path for line break segmentation 2026-05-05 18:59:07 +02:00
LibURL LibURL: Let Host use PublicSuffixData star rule matching 2026-06-16 06:14:07 +02:00
LibWasm LibWasm: Remove all gc, function-refs and EH test exceptions 2026-06-19 17:01:47 +02:00
LibWeb LibTextCodec: Use encoding_rs for legacy codecs 2026-06-20 21:56:43 +02:00
LibWebView Tests: Wait for session history convergence in UI history assertions 2026-06-18 10:23:49 +02:00
LibXML CMake: Rename serenity_* helper functions/macros to ladybird_* 2025-07-03 23:19:41 +02:00
Meta Meta: Handle juxtaposition in CSS value parsing code generation 2026-05-13 11:26:20 +01:00
CMakeLists.txt Tests: Add a LibDevTools test suite 2026-05-27 08:55:02 +01:00