Opened 11 years ago
Last modified 10 months ago
#1879 reopened defect
Reliably serialize NaN values
Reported by: | historic_bruno | Owned by: | wraitii |
---|---|---|---|
Priority: | Must Have | Milestone: | Backlog |
Component: | Core engine | Keywords: | |
Cc: | Patch: | Phab:D3205 |
Description (last modified by )
In #1828, it was discovered the cause of serialization test failure was Spidermonkey using different values internally for NaN
. According to ECMAScript-262, there is only a single NaN
value which can have different internal representation depending on the implementation. Because this might vary on different systems and even the same system in JIT vs. non-JIT paths, we should probably canonize it when serializing so it doesn't cause an OOS or serialization test failure.
Related problem: the debug serializer doesn't handle NaN
or Infinity
, so a simple text diff won't reveal these errors. For floating-point values in the engine, we can fix that by completing the canonfloat() function. For script vals, it's a bit more difficult because we use JS_Stringify
, which per the JSON spec doesn't allow NaN
or Infinity
(replacing them with null
).
Change History (12)
comment:1 by , 11 years ago
comment:2 by , 10 years ago
Owner: | set to |
---|---|
Status: | new → assigned |
I'm taking this ticket because I currently work with SpiderMonkey and Serialization which is both related and I will probably run into that problem too (or figure out it's solved now).
comment:3 by , 8 years ago
Owner: | removed |
---|---|
Status: | assigned → new |
comment:5 by , 6 years ago
Description: | modified (diff) |
---|---|
Milestone: | Backlog → Alpha 24 |
Priority: | Nice to Have → Should Have |
Some discussion at Phab:D1296.
comment:6 by , 3 years ago
Patch: | → Phab:D3205 |
---|
comment:9 by , 3 years ago
Milestone: | Alpha 25 → Alpha 26 |
---|---|
Priority: | Should Have → Must Have |
Resolution: | fixed |
Status: | closed → reopened |
comment:12 by , 10 months ago
I think the solution would be to not crash in case of serialisation error, not trying to fix the underlying problem.
In 13322: