Due to node trying to bring in more recent versions of V8, I was informed 
about it not building on illumos (Node calls it SmartOS but it's really 
applicable to all illumos distros).

After some searching and debug-by-printf, I found this line:

https://github.com/v8/v8/blob/main/src/sandbox/js-dispatch-table.h#L81

At first glance, this line appears to assume that pointers have all-zeroes 
at the top, for free use.  This is not true for illumos, which sets its 
heap pointers starting at:

#define USERLIMIT       ADDRESS_C(0xfffffc7fffe00000)

It gets more hard to understand, however, given that:

- It's a 16-bit mask, but used with 32-bit inputs like here:

https://github.com/v8/v8/blob/main/src/sandbox/js-dispatch-table-inl.h#L192-L195

- The 32-bit input has no mask collision with the 0xffff000000000000 
definition of the next_entry_index variable.

This feels like a bug to me, and if ones pointers have the high 16 bits set 
to 0, it might be an undetected one.

I may be missing something, and am glad to be educated,. To my eyes, either 
this code did not consider getting pointers with the high-16-bits set to 
non-zero values, or it is plain buggy, and the kFreeEntryTag specifically 
in js-dispatch-table.h is mis-defined.

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/v8-dev/6781ca35-76bb-4abb-bcc1-fbae680b942cn%40googlegroups.com.

Reply via email to