Good question. I've been embedding V8 in my app for many years. It's quite challenging for me to build the debug version, so I always build the release version. I tried to debug in Visual Studio.
scope_info() eventually calls
Flags() which tries to access unallocated / initialized memory.
IsEmpty() also calls
Flags() so that I cannot even check if this function info is empty or not. Most of the other API assert
!IsEmpty() internally, so they all crash. My workaround is to execute the function so that the memory corruption is fixed.
This API used to work till v13.4. I agree with you that my understand is also no matter the function is lazily compiled or not, the scope info, flags shall be ready for use.