FasterXML / jackson-core

Core part of Jackson that defines Streaming API as well as basic shared abstractions
Apache License 2.0
2.25k stars 773 forks source link

`NUL`-corrupted keys, values on JSON serialization #1274

Closed jaredstehler closed 3 months ago

jaredstehler commented 4 months ago

First posted in discussions: https://github.com/FasterXML/jackson/discussions/215

Jackson version: 2.12.6

We have observed sporadic instances of serialized JSON messages containing corrupted keys and/or values (correct length, but some amount of string suffix is replaced with NUL (0) bytes).

From our metrics, it seemed to recur every 2-4 days on average. We have swapped in a fork of jackson-core with fields marked as volatile in SerializedString (https://github.com/HubSpot/jackson-core/commit/4d3bd2db409468e275ca4c7c471b523c5d1c18d9) and have not seen the issue in > 10 days now.

Even though we saw this once or twice a while back on JDK 17, it seems to have been exacerbated with JDK 21. We are also running on ARM64 instances, which could have some behavior contributing here.

I have not been able to reproduce this in isolation, unfortunately. Happy to help provide any additional information. We are working on an upgrade to jackson 2.18 but I see those fields are unchanged in that branch as well.

pjfanning commented 4 months ago

Can you provide us with your code? Ideally as a PR but paste it here if a PR is not something you have time for.

PS We are unlikely to release a new v2.12 fix. The fix is likely to only go in more recent release lines - 2.17 and possibly 2.16, etc.

jaredstehler commented 4 months ago

Oh I wasn't planning on pushing for a 2.12 release; we are definitely moving to a higher version. I only called it out as a clarifying point of context.

jaredstehler commented 4 months ago

Which code are you looking for? The actual invocations to the ObjectMapper? Types being serialized?

pjfanning commented 4 months ago

Which code are you looking for? The actual invocations to the ObjectMapper? Types being serialized?

I was asking for a PR with the changes you want to SerializedString.

jaredstehler commented 4 months ago

ah, sorry. opened PR https://github.com/FasterXML/jackson-core/pull/1276

cowtowncoder commented 3 months ago

Fix merged via #1297.