ChakraCore icon indicating copy to clipboard operation
ChakraCore copied to clipboard

Fix assertion failure in `JavascriptArray.cpp`

Open ShortDevelopment opened this issue 3 years ago • 14 comments

Fix #6770

ShortDevelopment avatar Oct 03 '22 18:10 ShortDevelopment

Please can you add a test case for this?

rhuanjl avatar Oct 03 '22 19:10 rhuanjl

Sure, but it seems like I’ve created a new assertion failure; I’ll have another look at this…

ShortDevelopment avatar Oct 03 '22 19:10 ShortDevelopment

Problem is, that the assertion error only occurred with extremely large arrays. Using the poc of the mentioned issue causes the test to timeout.

ShortDevelopment avatar Oct 03 '22 20:10 ShortDevelopment

The timeouts are on a per JS file basis - does it still timeout if this test is done in a separate file with nothing else?

rhuanjl avatar Oct 03 '22 21:10 rhuanjl

Could the test complete in 3 minutes? Normally each test file gets a 1 min timeout but tests run with the Slow tag get 3 minutes instead (and are limited to only a couple of the test builds though that's not the point here).

If even 3 minutes is too short I don't know what to do - an Assert we can't test seems pointless. @ppenzin thoughts?

rhuanjl avatar Oct 05 '22 22:10 rhuanjl

I agree, we should try to run it as a separate test and mark as slow (given it does finish in 3 minutes).

ppenzin avatar Oct 06 '22 06:10 ppenzin

I took a peek at the test - I think the key is separating this test from the reset of ES6 Array API tests by putting it into a separate JS file that would be marked as Slow. I've done that and the testing succeeded, though do we actually run these slow files? Question to @rhuanjl, I think. Both of my runs (debug and release with debug info) produced "exclude: slow" in the output.

ppenzin avatar Jun 05 '24 19:06 ppenzin

I took a peek at the test - I think the key is separating this test from the reset of ES6 Array API tests by putting it into a separate JS file that would be marked as Slow. I've done that and the testing succeeded, though do we actually run these slow files? Question to @rhuanjl, I think. Both of my runs (debug and release with debug info) produced "exclude: slow" in the output.

You have to use a flag to run slow tests. Currently we do this on two of the windows CI builds x86 test and x64 test.

rhuanjl avatar Jun 06 '24 07:06 rhuanjl

I should note I never actually checked whether the assertion was just a left-over from a refactoring or a valid check for the following code.

Edit: The fast path uses uint32 as indices, so the asserts have to ensure no overflow occurs.

ShortDevelopment avatar Jun 06 '24 08:06 ShortDevelopment

@ppenzin It seems like the macro change hasn't been merged yet (See #6970). I gues their checks were failing because of a wrong copyright notice...

ShortDevelopment avatar Jun 08 '24 11:06 ShortDevelopment

I guess it is time for mass update to PAL copyright headers...

ppenzin avatar Jun 18 '24 17:06 ppenzin

@ShortDevelopment did you catch if these were the new tests failing? Azure link sometimes opens and sometimes doesn't for me

ppenzin avatar Jul 30 '24 01:07 ppenzin

@ppenzin Yes. Sadly the tests still timeout. I'm not sure whether I did apply the slow flag correctly...

ShortDevelopment avatar Jul 30 '24 08:07 ShortDevelopment

I've tried that on Windows sometime ago, but can't remember how I did it, need to revisit.

ppenzin avatar Aug 01 '24 18:08 ppenzin