Skip to content

add new asm2arm_tool to support the generation of Go files from native C code to sve_linkname and sve_wrapgoc modes.#910

Open
yupan14 wants to merge 4 commits intobytedance:feat/dev_hwfrom
yupan14:feat/dev_hw
Open

add new asm2arm_tool to support the generation of Go files from native C code to sve_linkname and sve_wrapgoc modes.#910
yupan14 wants to merge 4 commits intobytedance:feat/dev_hwfrom
yupan14:feat/dev_hw

Conversation

@yupan14
Copy link

@yupan14 yupan14 commented Feb 25, 2026

add new asm2arm_tool to support the generation of Go files from native C code to sve_linkname, and sve_wrapgoc modes.

功能测试脚本:

  • tools/asm2arm_tool/scripts/test_native_recover.sh
  • tools/asm2arm_tool/scripts/test_encoder_api.sh

功能测试报告:

  • tools/asm2arm_tool/output/test_results/neon_ut.log
Begin GC looping...
=== RUN   TestFastFloat_Encode
--- PASS: TestFastFloat_Encode (0.00s)
=== RUN   TestFastFloat_Random
--- PASS: TestFastFloat_Random (0.05s)
=== RUN   TestFastInt_IntToString
--- PASS: TestFastInt_IntToString (0.00s)
=== RUN   TestFastInt_UintToString
--- PASS: TestFastInt_UintToString (0.00s)
=== RUN   TestNative_Value
--- PASS: TestNative_Value (0.00s)
=== RUN   TestNative_Value_OutOfBound
--- PASS: TestNative_Value_OutOfBound (0.00s)
=== RUN   TestNative_Quote
--- PASS: TestNative_Quote (0.00s)
=== RUN   TestNative_QuoteNoMem
--- PASS: TestNative_QuoteNoMem (0.00s)
=== RUN   TestNative_DoubleQuote
--- PASS: TestNative_DoubleQuote (0.00s)
=== RUN   TestNative_Unquote
--- PASS: TestNative_Unquote (0.00s)
=== RUN   TestNative_UnquoteError
--- PASS: TestNative_UnquoteError (0.00s)
=== RUN   TestNative_DoubleUnquote
--- PASS: TestNative_DoubleUnquote (0.00s)
=== RUN   TestNative_UnquoteUnicodeReplacement
--- PASS: TestNative_UnquoteUnicodeReplacement (0.00s)
=== RUN   TestNative_HTMLEscape
--- PASS: TestNative_HTMLEscape (0.00s)
=== RUN   TestNative_HTMLEscapeNoMem
--- PASS: TestNative_HTMLEscapeNoMem (0.00s)
=== RUN   TestNative_Vstring_ValidUnescapedChars
--- PASS: TestNative_Vstring_ValidUnescapedChars (0.00s)
=== RUN   TestNative_VstringEscapeEOF
--- PASS: TestNative_VstringEscapeEOF (0.00s)
=== RUN   TestNative_VstringHangUpOnRandomData
js: (types.JsonState) {
 Vt: (int64) -1,
 Dv: (float64) 0,
 Iv: (int64) 0,
 Ep: (int) 0,
 Dbuf: (*uint8)(<nil>),
 Dcap: (int) 0
}

--- PASS: TestNative_VstringHangUpOnRandomData (0.00s)
=== RUN   TestNative_Vnumber
--- PASS: TestNative_Vnumber (0.00s)
=== RUN   TestNative_Vsigned
--- PASS: TestNative_Vsigned (0.00s)
=== RUN   TestNative_Vunsigned
--- PASS: TestNative_Vunsigned (0.00s)
=== RUN   TestNative_SkipOne
--- PASS: TestNative_SkipOne (0.00s)
=== RUN   TestNative_SkipOne_Error
--- PASS: TestNative_SkipOne_Error (0.00s)
=== RUN   TestNative_SkipArray
--- PASS: TestNative_SkipArray (0.00s)
=== RUN   TestNative_SkipObject
--- PASS: TestNative_SkipObject (0.00s)
=== RUN   TestNative_SkipNumber
--- PASS: TestNative_SkipNumber (0.00s)
=== RUN   TestNative_SkipNumberInJson
--- PASS: TestNative_SkipNumberInJson (0.00s)
=== RUN   TestNative_SkipOneFast
--- PASS: TestNative_SkipOneFast (0.00s)
=== RUN   TestNative_SkipOneFast_Error
--- PASS: TestNative_SkipOneFast_Error (0.00s)
=== RUN   TestNative_GetByPath
--- PASS: TestNative_GetByPath (0.00s)
=== RUN   TestNative_Vstring
--- PASS: TestNative_Vstring (0.00s)
=== RUN   TestRecover_f32toa
    recover_arm64_test.go:56: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_f32toa (0.00s)
=== RUN   TestRecover_f64toa
    recover_arm64_test.go:67: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_f64toa (0.00s)
=== RUN   TestRecover_i64toa
    recover_arm64_test.go:78: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_i64toa (0.00s)
=== RUN   TestRecover_u64toa
    recover_arm64_test.go:89: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_u64toa (0.00s)
=== RUN   TestRecover_lspace
    recover_arm64_test.go:100: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_lspace (0.00s)
=== RUN   TestRecover_quote
=== RUN   TestRecover_quote/sp
    recover_arm64_test.go:115: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_quote/dp
    recover_arm64_test.go:125: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_quote/dn
    recover_arm64_test.go:135: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_quote (0.00s)
    --- PASS: TestRecover_quote/sp (0.00s)
    --- PASS: TestRecover_quote/dp (0.00s)
    --- PASS: TestRecover_quote/dn (0.00s)
=== RUN   TestRecover_html_escape
=== RUN   TestRecover_html_escape/sp
    recover_arm64_test.go:151: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_html_escape/dp
    recover_arm64_test.go:161: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_html_escape/dn
    recover_arm64_test.go:171: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_html_escape (0.00s)
    --- PASS: TestRecover_html_escape/sp (0.00s)
    --- PASS: TestRecover_html_escape/dp (0.00s)
    --- PASS: TestRecover_html_escape/dn (0.00s)
=== RUN   TestRecover_unquote
=== RUN   TestRecover_unquote/sp
    recover_arm64_test.go:187: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_unquote/dp
    recover_arm64_test.go:197: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_unquote/ep
    recover_arm64_test.go:207: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_unquote (0.00s)
    --- PASS: TestRecover_unquote/sp (0.00s)
    --- PASS: TestRecover_unquote/dp (0.00s)
    --- PASS: TestRecover_unquote/ep (0.00s)
=== RUN   TestRecover_value
=== RUN   TestRecover_value/sp
    recover_arm64_test.go:222: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_value/v
    recover_arm64_test.go:232: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_value (0.00s)
    --- PASS: TestRecover_value/sp (0.00s)
    --- PASS: TestRecover_value/v (0.00s)
=== RUN   TestRecover_vstring
=== RUN   TestRecover_vstring/sp
    recover_arm64_test.go:248: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_vstring/p
    recover_arm64_test.go:258: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_vstring/v
    recover_arm64_test.go:268: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_vstring (0.00s)
    --- PASS: TestRecover_vstring/sp (0.00s)
    --- PASS: TestRecover_vstring/p (0.00s)
    --- PASS: TestRecover_vstring/v (0.00s)
=== RUN   TestRecover_vnumber
=== RUN   TestRecover_vnumber/sp
    recover_arm64_test.go:284: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_vnumber/p
    recover_arm64_test.go:294: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_vnumber/v
    recover_arm64_test.go:304: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_vnumber (0.00s)
    --- PASS: TestRecover_vnumber/sp (0.00s)
    --- PASS: TestRecover_vnumber/p (0.00s)
    --- PASS: TestRecover_vnumber/v (0.00s)
=== RUN   TestRecover_vsigned
=== RUN   TestRecover_vsigned/sp
    recover_arm64_test.go:320: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_vsigned/p
    recover_arm64_test.go:330: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_vsigned/v
    recover_arm64_test.go:340: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_vsigned (0.00s)
    --- PASS: TestRecover_vsigned/sp (0.00s)
    --- PASS: TestRecover_vsigned/p (0.00s)
    --- PASS: TestRecover_vsigned/v (0.00s)
=== RUN   TestRecover_vunsigned
=== RUN   TestRecover_vunsigned/sp
    recover_arm64_test.go:356: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_vunsigned/p
    recover_arm64_test.go:366: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_vunsigned/v
    recover_arm64_test.go:376: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_vunsigned (0.00s)
    --- PASS: TestRecover_vunsigned/sp (0.00s)
    --- PASS: TestRecover_vunsigned/p (0.00s)
    --- PASS: TestRecover_vunsigned/v (0.00s)
=== RUN   TestRecover_skip_one
=== RUN   TestRecover_skip_one/sp
    recover_arm64_test.go:392: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_one/p
    recover_arm64_test.go:402: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_one/v
    recover_arm64_test.go:412: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_skip_one (0.00s)
    --- PASS: TestRecover_skip_one/sp (0.00s)
    --- PASS: TestRecover_skip_one/p (0.00s)
    --- PASS: TestRecover_skip_one/v (0.00s)
=== RUN   TestRecover_skip_one_fast
=== RUN   TestRecover_skip_one_fast/sp
    recover_arm64_test.go:427: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_one_fast/p
    recover_arm64_test.go:437: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_skip_one_fast (0.00s)
    --- PASS: TestRecover_skip_one_fast/sp (0.00s)
    --- PASS: TestRecover_skip_one_fast/p (0.00s)
=== RUN   TestRecover_skip_array
=== RUN   TestRecover_skip_array/sp
    recover_arm64_test.go:453: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_array/p
    recover_arm64_test.go:463: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_array/v
    recover_arm64_test.go:473: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_skip_array (0.00s)
    --- PASS: TestRecover_skip_array/sp (0.00s)
    --- PASS: TestRecover_skip_array/p (0.00s)
    --- PASS: TestRecover_skip_array/v (0.00s)
=== RUN   TestRecover_skip_object
=== RUN   TestRecover_skip_object/sp
    recover_arm64_test.go:489: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_object/p
    recover_arm64_test.go:499: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_object/v
    recover_arm64_test.go:509: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_skip_object (0.00s)
    --- PASS: TestRecover_skip_object/sp (0.00s)
    --- PASS: TestRecover_skip_object/p (0.00s)
    --- PASS: TestRecover_skip_object/v (0.00s)
=== RUN   TestRecover_skip_number
=== RUN   TestRecover_skip_number/sp
    recover_arm64_test.go:524: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_number/p
    recover_arm64_test.go:534: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_skip_number (0.00s)
    --- PASS: TestRecover_skip_number/sp (0.00s)
    --- PASS: TestRecover_skip_number/p (0.00s)
=== RUN   TestRecover_get_by_path
=== RUN   TestRecover_get_by_path/sp
    recover_arm64_test.go:551: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_get_by_path/p
    recover_arm64_test.go:561: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_get_by_path/path
    recover_arm64_test.go:571: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_get_by_path (0.00s)
    --- PASS: TestRecover_get_by_path/sp (0.00s)
    --- PASS: TestRecover_get_by_path/p (0.00s)
    --- PASS: TestRecover_get_by_path/path (0.00s)
=== RUN   TestRecover_validate_one
=== RUN   TestRecover_validate_one/sp
    recover_arm64_test.go:587: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_validate_one/p
    recover_arm64_test.go:597: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_validate_one/v
    recover_arm64_test.go:607: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_validate_one (0.00s)
    --- PASS: TestRecover_validate_one/sp (0.00s)
    --- PASS: TestRecover_validate_one/p (0.00s)
    --- PASS: TestRecover_validate_one/v (0.00s)
=== RUN   TestRecover_validate_utf8
=== RUN   TestRecover_validate_utf8/sp
    recover_arm64_test.go:623: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_validate_utf8/p
    recover_arm64_test.go:633: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_validate_utf8/v
    recover_arm64_test.go:643: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_validate_utf8 (0.00s)
    --- PASS: TestRecover_validate_utf8/sp (0.00s)
    --- PASS: TestRecover_validate_utf8/p (0.00s)
    --- PASS: TestRecover_validate_utf8/v (0.00s)
=== RUN   TestRecover_validate_utf8_fast
    recover_arm64_test.go:655: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_validate_utf8_fast (0.00s)
=== RUN   TestRecover_parse_with_padding
    recover_arm64_test.go:666: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_parse_with_padding (0.00s)
=== RUN   TestRecover_lookup_small_key
=== RUN   TestRecover_lookup_small_key/key
    recover_arm64_test.go:678: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_lookup_small_key/table
    recover_arm64_test.go:689: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_lookup_small_key (0.00s)
    --- PASS: TestRecover_lookup_small_key/key (0.00s)
    --- PASS: TestRecover_lookup_small_key/table (0.00s)
PASS
ok  	github.com/bytedance/sonic/tools/asm2arm_tool/output/neon	0.176s

  • tools/asm2arm_tool/output/test_results/sve_linkname_ut.log
Begin GC looping...
=== RUN   TestNative_SkipOne
--- PASS: TestNative_SkipOne (0.00s)
=== RUN   TestNative_SkipOne_Error
--- PASS: TestNative_SkipOne_Error (0.00s)
=== RUN   TestNative_SkipOneFast
--- PASS: TestNative_SkipOneFast (0.00s)
=== RUN   TestNative_SkipOneFast_Error
--- PASS: TestNative_SkipOneFast_Error (0.00s)
=== RUN   TestNative_GetByPath
--- PASS: TestNative_GetByPath (0.00s)
=== RUN   TestRecover_html_escape
=== RUN   TestRecover_html_escape/sp
    recover_arm64_test.go:96: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_html_escape/dp
    recover_arm64_test.go:106: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_html_escape/dn
    recover_arm64_test.go:116: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_html_escape (0.00s)
    --- PASS: TestRecover_html_escape/sp (0.00s)
    --- PASS: TestRecover_html_escape/dp (0.00s)
    --- PASS: TestRecover_html_escape/dn (0.00s)
=== RUN   TestRecover_skip_one
=== RUN   TestRecover_skip_one/sp
    recover_arm64_test.go:132: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_one/p
    recover_arm64_test.go:142: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_one/v
    recover_arm64_test.go:152: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_skip_one (0.00s)
    --- PASS: TestRecover_skip_one/sp (0.00s)
    --- PASS: TestRecover_skip_one/p (0.00s)
    --- PASS: TestRecover_skip_one/v (0.00s)
=== RUN   TestRecover_skip_one_fast
=== RUN   TestRecover_skip_one_fast/sp
    recover_arm64_test.go:167: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_one_fast/p
    recover_arm64_test.go:177: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_skip_one_fast (0.00s)
    --- PASS: TestRecover_skip_one_fast/sp (0.00s)
    --- PASS: TestRecover_skip_one_fast/p (0.00s)
=== RUN   TestRecover_get_by_path
=== RUN   TestRecover_get_by_path/sp
    recover_arm64_test.go:194: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_get_by_path/p
    recover_arm64_test.go:204: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_get_by_path/path
    recover_arm64_test.go:214: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_get_by_path (0.00s)
    --- PASS: TestRecover_get_by_path/sp (0.00s)
    --- PASS: TestRecover_get_by_path/p (0.00s)
    --- PASS: TestRecover_get_by_path/path (0.00s)
=== RUN   TestRecover_parse_with_padding
    recover_arm64_test.go:226: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_parse_with_padding (0.00s)
=== RUN   TestRecover_lookup_small_key
=== RUN   TestRecover_lookup_small_key/key
    recover_arm64_test.go:238: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_lookup_small_key/table
    recover_arm64_test.go:249: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_lookup_small_key (0.00s)
    --- PASS: TestRecover_lookup_small_key/key (0.00s)
    --- PASS: TestRecover_lookup_small_key/table (0.00s)
PASS
ok  	github.com/bytedance/sonic/tools/asm2arm_tool/output/sve_linkname	0.115s
  • tools/asm2arm_tool/output/test_results/sve_wrapgoc_ut.log
Begin GC looping...
=== RUN   TestFastFloat_Encode
--- PASS: TestFastFloat_Encode (0.00s)
=== RUN   TestFastFloat_Random
--- PASS: TestFastFloat_Random (0.05s)
=== RUN   TestFastInt_IntToString
--- PASS: TestFastInt_IntToString (0.00s)
=== RUN   TestFastInt_UintToString
--- PASS: TestFastInt_UintToString (0.00s)
=== RUN   TestNative_GetByPath
--- PASS: TestNative_GetByPath (0.00s)
=== RUN   TestNative_Quote
--- PASS: TestNative_Quote (0.00s)
=== RUN   TestNative_SkipOneFast
--- PASS: TestNative_SkipOneFast (0.00s)
=== RUN   TestNative_SkipOne
--- PASS: TestNative_SkipOne (0.00s)
=== RUN   TestNative_SkipOne_Error
--- PASS: TestNative_SkipOne_Error (0.00s)
=== RUN   TestRecover_f32toa
    recover_arm64_test.go:93: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_f32toa (0.00s)
=== RUN   TestRecover_f64toa
    recover_arm64_test.go:105: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_f64toa (0.00s)
=== RUN   TestRecover_i64toa
    recover_arm64_test.go:117: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_i64toa (0.00s)
=== RUN   TestRecover_u64toa
    recover_arm64_test.go:129: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_u64toa (0.00s)
=== RUN   TestRecover_quote
=== RUN   TestRecover_quote/sp
    recover_arm64_test.go:145: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_quote/dp
    recover_arm64_test.go:155: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_quote/dn
    recover_arm64_test.go:165: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_quote (0.00s)
    --- PASS: TestRecover_quote/sp (0.00s)
    --- PASS: TestRecover_quote/dp (0.00s)
    --- PASS: TestRecover_quote/dn (0.00s)
=== RUN   TestRecover_skip_one
=== RUN   TestRecover_skip_one/sp
    recover_arm64_test.go:182: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_one/p
    recover_arm64_test.go:192: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_one/v
    recover_arm64_test.go:202: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_skip_one (0.00s)
    --- PASS: TestRecover_skip_one/sp (0.00s)
    --- PASS: TestRecover_skip_one/p (0.00s)
    --- PASS: TestRecover_skip_one/v (0.00s)
=== RUN   TestRecover_skip_one_fast
=== RUN   TestRecover_skip_one_fast/sp
    recover_arm64_test.go:218: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_skip_one_fast/p
    recover_arm64_test.go:228: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_skip_one_fast (0.00s)
    --- PASS: TestRecover_skip_one_fast/sp (0.00s)
    --- PASS: TestRecover_skip_one_fast/p (0.00s)
=== RUN   TestRecover_get_by_path
=== RUN   TestRecover_get_by_path/sp
    recover_arm64_test.go:246: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_get_by_path/p
    recover_arm64_test.go:256: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_get_by_path/path
    recover_arm64_test.go:266: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_get_by_path (0.00s)
    --- PASS: TestRecover_get_by_path/sp (0.00s)
    --- PASS: TestRecover_get_by_path/p (0.00s)
    --- PASS: TestRecover_get_by_path/path (0.00s)
=== RUN   TestRecover_parse_with_padding
    recover_arm64_test.go:278: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_parse_with_padding (0.00s)
=== RUN   TestRecover_lookup_small_key
=== RUN   TestRecover_lookup_small_key/key
    recover_arm64_test.go:290: recover:  runtime error: invalid memory address or nil pointer dereference
=== RUN   TestRecover_lookup_small_key/table
    recover_arm64_test.go:301: recover:  runtime error: invalid memory address or nil pointer dereference
--- PASS: TestRecover_lookup_small_key (0.00s)
    --- PASS: TestRecover_lookup_small_key/key (0.00s)
    --- PASS: TestRecover_lookup_small_key/table (0.00s)
PASS
ok  	github.com/bytedance/sonic/tools/asm2arm_tool/output/sve_wrapgoc	0.208s

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.


double_free seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

@yupan14
Copy link
Author

yupan14 commented Feb 25, 2026

  • 主项目JIT模式测试
  • 测试目录: .
  • 测试命令: GOMAXPROCS=4 go test -race -covermode=atomic -coverprofile=coverage_main.txt ./...
# github.com/bytedance/sonic/internal/decoder/jitdec [github.com/bytedance/sonic/internal/decoder/jitdec.test]
internal/decoder/jitdec/asm_stubs_amd64_go121.go:30:12: undefined: _IC
internal/decoder/jitdec/asm_stubs_amd64_go121.go:38:13: undefined: _Assembler
internal/decoder/jitdec/asm_stubs_amd64_go121.go:61:13: undefined: _Assembler
internal/decoder/jitdec/asm_stubs_amd64_go121.go:87:13: undefined: _ValueDecoder
internal/decoder/jitdec/asm_stubs_amd64_go121.go:110:13: undefined: _ValueDecoder
internal/decoder/jitdec/debug.go:51:13: undefined: _Assembler
internal/decoder/jitdec/debug.go:56:13: undefined: _Assembler
internal/decoder/jitdec/pools.go:82:20: undefined array length _FP_offs or missing type constraint
internal/decoder/jitdec/pools.go:83:20: undefined array length _VD_offs or missing type constraint
internal/decoder/jitdec/assembler_test.go:75:13: undefined: _Assembler
internal/decoder/jitdec/assembler_test.go:75:13: too many errors
# github.com/bytedance/sonic/internal/native/avx2
internal/native/avx2/native_export.go:27:20: undefined: _text_f64toa
internal/native/avx2/native_export.go:28:20: undefined: _text_f32toa
internal/native/avx2/native_export.go:29:20: undefined: _text_get_by_path
internal/native/avx2/native_export.go:30:20: undefined: _text_html_escape
internal/native/avx2/native_export.go:31:20: undefined: _text_i64toa
internal/native/avx2/native_export.go:32:20: undefined: _text_lspace
internal/native/avx2/native_export.go:33:20: undefined: _text_quote
internal/native/avx2/native_export.go:34:20: undefined: _text_skip_array
internal/native/avx2/native_export.go:35:20: undefined: _text_skip_number
internal/native/avx2/native_export.go:36:20: undefined: _text_skip_one
internal/native/avx2/native_export.go:36:20: too many errors
# github.com/bytedance/sonic/internal/native/sse
internal/native/sse/native_export.go:27:20: undefined: _text_f64toa
internal/native/sse/native_export.go:28:20: undefined: _text_f32toa
internal/native/sse/native_export.go:29:20: undefined: _text_get_by_path
internal/native/sse/native_export.go:30:20: undefined: _text_html_escape
internal/native/sse/native_export.go:31:20: undefined: _text_i64toa
internal/native/sse/native_export.go:32:20: undefined: _text_lspace
internal/native/sse/native_export.go:33:20: undefined: _text_quote
internal/native/sse/native_export.go:34:20: undefined: _text_skip_array
internal/native/sse/native_export.go:35:20: undefined: _text_skip_number
internal/native/sse/native_export.go:36:20: undefined: _text_skip_one
internal/native/sse/native_export.go:36:20: too many errors
ok      github.com/bytedance/sonic      103.018s        coverage: 68.5% of statements
ok      github.com/bytedance/sonic/ast  17.195s coverage: 69.7% of statements
ok      github.com/bytedance/sonic/decoder      3.458s  coverage: [no statements]
ok      github.com/bytedance/sonic/encoder      1.337s  coverage: [no statements]
ok      github.com/bytedance/sonic/internal/caching     1.009s  coverage: 46.4% of statements
        github.com/bytedance/sonic/internal/cpu         coverage: 0.0% of statements
ok      github.com/bytedance/sonic/internal/decoder/api 1.040s  coverage: 72.2% of statements
?       github.com/bytedance/sonic/internal/decoder/consts      [no test files]
ok      github.com/bytedance/sonic/internal/decoder/errors      1.008s  coverage: 55.3% of statements
FAIL    github.com/bytedance/sonic/internal/decoder/jitdec [build failed]
ok      github.com/bytedance/sonic/internal/decoder/optdec      1.191s  coverage: 3.0% of statements
ok      github.com/bytedance/sonic/internal/encoder     1.536s  coverage: 70.3% of statements
ok      github.com/bytedance/sonic/internal/encoder/alg 1.022s  coverage: 28.9% of statements
ok      github.com/bytedance/sonic/internal/encoder/arm64       1.175s  coverage: 95.1% of statements
        github.com/bytedance/sonic/internal/encoder/ir          coverage: 0.0% of statements
        github.com/bytedance/sonic/internal/encoder/prim                coverage: 0.0% of statements
        github.com/bytedance/sonic/internal/encoder/vars                coverage: 0.0% of statements
ok      github.com/bytedance/sonic/internal/encoder/vm  1.033s  coverage: 29.4% of statements
        github.com/bytedance/sonic/internal/envs                coverage: 0.0% of statements
ok      github.com/bytedance/sonic/internal/jit 1.011s  coverage: 13.7% of statements
ok      github.com/bytedance/sonic/internal/native      1.019s  coverage: 20.0% of statements [no tests to run]
FAIL    github.com/bytedance/sonic/internal/native/avx2 [build failed]
ok      github.com/bytedance/sonic/internal/native/neon 1.320s  coverage: 100.0% of statements
FAIL    github.com/bytedance/sonic/internal/native/sse [build failed]
ok      github.com/bytedance/sonic/internal/native/sve_linkname 1.131s  coverage: 100.0% of statements
ok      github.com/bytedance/sonic/internal/native/sve_wrapgoc  1.508s  coverage: 100.0% of statements
        github.com/bytedance/sonic/internal/native/types                coverage: 0.0% of statements
        github.com/bytedance/sonic/internal/optcaching          coverage: 0.0% of statements
ok      github.com/bytedance/sonic/internal/resolver    1.021s  coverage: 77.5% of statements
ok      github.com/bytedance/sonic/internal/rt  1.043s  coverage: 22.8% of statements
        github.com/bytedance/sonic/internal/utils               coverage: 0.0% of statements
        github.com/bytedance/sonic/option               coverage: 0.0% of statements
ok      github.com/bytedance/sonic/tools/asm2arm_tool/output/neon       1.306s  coverage: 100.0% of statements
ok      github.com/bytedance/sonic/tools/asm2arm_tool/output/sve_linkname       1.129s  coverage: 100.0% of statements
ok      github.com/bytedance/sonic/tools/asm2arm_tool/output/sve_wrapgoc        1.369s  coverage: 100.0% of statements
        github.com/bytedance/sonic/unquote              coverage: 0.0% of statements
ok      github.com/bytedance/sonic/utf8 1.465s  coverage: 92.9% of statements
FAIL

[说明]基线(此分支不打hw的补丁)同样报错

@yupan14
Copy link
Author

yupan14 commented Feb 25, 2026

  • External JSON库兼容性测试
  • 测试目录: external_jsonlib_test
  • 测试命令: go test -v -race ./...
Begin GC looping...
=== RUN   TestMsgpackDecodeMatchesSonicGeneric
--- PASS: TestMsgpackDecodeMatchesSonicGeneric (0.01s)
=== RUN   TestMsgpackDecodeMatchesSonicBinding
--- PASS: TestMsgpackDecodeMatchesSonicBinding (0.01s)
=== RUN   TestMsgpackEncodeMatchesSonicGeneric
--- PASS: TestMsgpackEncodeMatchesSonicGeneric (0.12s)
=== RUN   TestMsgpackEncodeMatchesSonicBinding
--- PASS: TestMsgpackEncodeMatchesSonicBinding (0.50s)
PASS
ok      github.com/bytedance/sonic/external_jsonlib_test/benchmark_test (cached)
Begin GC looping...
=== RUN   TestCompatMarshalDefault
--- PASS: TestCompatMarshalDefault (0.07s)
=== RUN   TestCompatUnmarshalDefault
--- PASS: TestCompatUnmarshalDefault (0.00s)
=== RUN   TestCompatEncoderDefault
--- PASS: TestCompatEncoderDefault (0.02s)
=== RUN   TestCompatDecoderDefault
--- PASS: TestCompatDecoderDefault (0.00s)
=== RUN   TestNotFoud
--- PASS: TestNotFoud (0.00s)
=== RUN   TestNull
--- PASS: TestNull (0.00s)
=== RUN   TestDecodeSingle
--- PASS: TestDecodeSingle (0.00s)
=== RUN   TestDecodeMulti
--- PASS: TestDecodeMulti (0.00s)
=== RUN   TestDecodeHalt
--- PASS: TestDecodeHalt (0.01s)
=== RUN   TestMore
--- PASS: TestMore (0.01s)
PASS
ok      github.com/bytedance/sonic/external_jsonlib_test/unit_test      (cached)

@yupan14
Copy link
Author

yupan14 commented Feb 25, 2026

  • Issue修复测试
  • 测试目录: issue_test
  • 测试命令: GOMAXPROCS=4 go test -race ./...
ok      github.com/bytedance/sonic/issue_test   32.613s
?       github.com/bytedance/sonic/issue_test/plugin    [no test files]

@yupan14
Copy link
Author

yupan14 commented Feb 25, 2026

  • 泛型JIT模式测试
  • 测试目录: generic_test
  • 测试命令: GOMAXPROCS=4 go test -race ./...
ok      github.com/bytedance/sonic/generic_test 1.050s

@yupan14
Copy link
Author

yupan14 commented Feb 25, 2026

  • 泛型VM模式测试
  • 测试目录: generic_test
  • 测试命令: SONIC_USE_OPTDEC=1 SONIC_USE_FASTMAP=1 SONIC_ENCODER_USE_VM=1 GOMAXPROCS=4 go test -v -race ./...
=== RUN   TestGenericAPI
    sonic_test.go:91: {"a":[true,0.5,"hello world"]}
    sonic_test.go:106: {"a":[true,0.5,"hello world"]}
    sonic_test.go:116: 1
    sonic_test.go:126: 1
    sonic_test.go:136: "1"
    sonic_test.go:149: 1
    sonic_test.go:159: 1
--- PASS: TestGenericAPI (0.01s)
PASS
ok      github.com/bytedance/sonic/generic_test 1.028s

@yupan14
Copy link
Author

yupan14 commented Feb 25, 2026

  • 加载器测试
  • 测试目录: loader
  • 测试命令: go test -race ./...
ok      github.com/bytedance/sonic/loader       1.152s
ok      github.com/bytedance/sonic/loader/internal/abi  1.011s
ok      github.com/bytedance/sonic/loader/internal/iasm/arm64   1.010s
ok      github.com/bytedance/sonic/loader/internal/iasm/expr    1.011s
?       github.com/bytedance/sonic/loader/internal/iasm/obj     [no test files]
ok      github.com/bytedance/sonic/loader/internal/iasm/x86_64  1.008s
?       github.com/bytedance/sonic/loader/internal/rt   [no test files]

@yupan14
Copy link
Author

yupan14 commented Feb 25, 2026

  • AST模块测试
  • 测试目录: ast
  • 测试命令: go test -v -race ./...
Begin GC looping...
=== RUN   TestSortNodeTwitter
--- PASS: TestSortNodeTwitter (0.13s)
=== RUN   TestNodeAny
--- PASS: TestNodeAny (0.02s)
=== RUN   TestTypeCast2
0 {Raw {34 0 0xc000226370 <nil>} "" <nil>}
--- PASS: TestTypeCast2 (0.00s)
=== RUN   TestStackAny
any: ast.Node{t:34, l:0x0, p:(unsafe.Pointer)(0xc0002263a0), m:(*sync.RWMutex)(nil)}
finish GC
finish marshal
--- PASS: TestStackAny (0.02s)
=== RUN   Test_Export
=== RUN   Test_Export/bool
=== RUN   Test_Export/bool#01
=== RUN   Test_Export/number
=== RUN   Test_Export/number#01
=== RUN   Test_Export/string
=== RUN   Test_Export/string#01
=== RUN   Test_Export/object
=== RUN   Test_Export/object#01
=== RUN   Test_Export/array
=== RUN   Test_Export/array#01
--- PASS: Test_Export (0.01s)
    --- PASS: Test_Export/bool (0.00s)
    --- PASS: Test_Export/bool#01 (0.00s)
    --- PASS: Test_Export/number (0.00s)
    --- PASS: Test_Export/number#01 (0.00s)
    --- PASS: Test_Export/string (0.00s)
    --- PASS: Test_Export/string#01 (0.00s)
    --- PASS: Test_Export/object (0.00s)
    --- PASS: Test_Export/object#01 (0.00s)
    --- PASS: Test_Export/array (0.00s)
    --- PASS: Test_Export/array#01 (0.00s)
=== RUN   Test_linkedPairs_Push
=== RUN   Test_linkedPairs_Push/add_empty
=== RUN   Test_linkedPairs_Push/add_one
=== RUN   Test_linkedPairs_Push/add__DEFAULT_NODE_CAP
--- PASS: Test_linkedPairs_Push (0.00s)
    --- PASS: Test_linkedPairs_Push/add_empty (0.00s)
    --- PASS: Test_linkedPairs_Push/add_one (0.00s)
    --- PASS: Test_linkedPairs_Push/add__DEFAULT_NODE_CAP (0.00s)
=== RUN   Test_linkedNodes_Push
=== RUN   Test_linkedNodes_Push/add_empty
=== RUN   Test_linkedNodes_Push/add_one
=== RUN   Test_linkedNodes_Push/add__DEFAULT_NODE_CAP
--- PASS: Test_linkedNodes_Push (0.00s)
    --- PASS: Test_linkedNodes_Push/add_empty (0.00s)
    --- PASS: Test_linkedNodes_Push/add_one (0.00s)
    --- PASS: Test_linkedNodes_Push/add__DEFAULT_NODE_CAP (0.00s)
=== RUN   Test_linkedNodes_Pop
=== RUN   Test_linkedNodes_Pop/remove_empty
=== RUN   Test_linkedNodes_Pop/remove_one
=== RUN   Test_linkedNodes_Pop/add__DEFAULT_NODE_CAP
--- PASS: Test_linkedNodes_Pop (0.00s)
    --- PASS: Test_linkedNodes_Pop/remove_empty (0.00s)
    --- PASS: Test_linkedNodes_Pop/remove_one (0.00s)
    --- PASS: Test_linkedNodes_Pop/add__DEFAULT_NODE_CAP (0.00s)
=== RUN   Test_linkedNodes_MoveOne
=== RUN   Test_linkedNodes_MoveOne/over_index
=== RUN   Test_linkedNodes_MoveOne/equal_index
=== RUN   Test_linkedNodes_MoveOne/forward_index
=== RUN   Test_linkedNodes_MoveOne/backward_index
--- PASS: Test_linkedNodes_MoveOne (0.00s)
    --- PASS: Test_linkedNodes_MoveOne/over_index (0.00s)
    --- PASS: Test_linkedNodes_MoveOne/equal_index (0.00s)
    --- PASS: Test_linkedNodes_MoveOne/forward_index (0.00s)
    --- PASS: Test_linkedNodes_MoveOne/backward_index (0.00s)
=== RUN   Test_DecodeString
false
=== RUN   Test_DecodeString/empty
=== RUN   Test_DecodeString/one
=== RUN   Test_DecodeString/escape
=== RUN   Test_DecodeString/escape#01
=== RUN   Test_DecodeString/uft8
=== RUN   Test_DecodeString/uft8#01
=== RUN   Test_DecodeString/invalid_uft8
=== RUN   Test_DecodeString/invalid_escape
=== RUN   Test_DecodeString/invalid_escape#01
=== RUN   Test_DecodeString/invalid_string
=== RUN   Test_DecodeString/invalid_string#01
--- PASS: Test_DecodeString (0.01s)
    --- PASS: Test_DecodeString/empty (0.00s)
    --- PASS: Test_DecodeString/one (0.00s)
    --- PASS: Test_DecodeString/escape (0.00s)
    --- PASS: Test_DecodeString/escape#01 (0.00s)
    --- PASS: Test_DecodeString/uft8 (0.00s)
    --- PASS: Test_DecodeString/uft8#01 (0.00s)
    --- PASS: Test_DecodeString/invalid_uft8 (0.00s)
    --- PASS: Test_DecodeString/invalid_escape (0.00s)
    --- PASS: Test_DecodeString/invalid_escape#01 (0.00s)
    --- PASS: Test_DecodeString/invalid_string (0.00s)
    --- PASS: Test_DecodeString/invalid_string#01 (0.00s)
=== RUN   TestGC_Encode
--- PASS: TestGC_Encode (1.06s)
=== RUN   TestEncodeValue
    encode_test.go:108: 0
    encode_test.go:108: 1
    encode_test.go:108: 2
    encode_test.go:108: 3
    encode_test.go:108: 4
    encode_test.go:108: 5
    encode_test.go:108: 6
    encode_test.go:108: 7
    encode_test.go:108: 8
    encode_test.go:108: 9
    encode_test.go:108: 10
    encode_test.go:108: 11
    encode_test.go:108: 12
    encode_test.go:108: 13
    encode_test.go:108: 14
    encode_test.go:108: 15
    encode_test.go:108: 16
    encode_test.go:108: 17
    encode_test.go:108: 18
--- PASS: TestEncodeValue (0.43s)
=== RUN   TestEncodeNode
--- PASS: TestEncodeNode (0.00s)
=== RUN   TestMarshalSort
--- PASS: TestMarshalSort (0.00s)
=== RUN   TestEncodeNone
--- PASS: TestEncodeNone (0.00s)
=== RUN   TestGetFromEmptyJson
=== RUN   TestGetFromEmptyJson/#00
=== RUN   TestGetFromEmptyJson/#01
=== RUN   TestGetFromEmptyJson/#02
=== RUN   TestGetFromEmptyJson/#03
=== RUN   TestGetFromEmptyJson/#04
--- PASS: TestGetFromEmptyJson (0.00s)
    --- PASS: TestGetFromEmptyJson/#00 (0.00s)
    --- PASS: TestGetFromEmptyJson/#01 (0.00s)
    --- PASS: TestGetFromEmptyJson/#02 (0.00s)
    --- PASS: TestGetFromEmptyJson/#03 (0.00s)
    --- PASS: TestGetFromEmptyJson/#04 (0.00s)
=== RUN   TestGetFromSyntaxError
=== RUN   TestGetFromSyntaxError/_____
=== RUN   TestGetFromSyntaxError/123.
=== RUN   TestGetFromSyntaxError/+124
=== RUN   TestGetFromSyntaxError/-
=== RUN   TestGetFromSyntaxError/-e123
=== RUN   TestGetFromSyntaxError/-1.e123
=== RUN   TestGetFromSyntaxError/-12e456.1
=== RUN   TestGetFromSyntaxError/-12e.1
=== RUN   TestGetFromSyntaxError/[
=== RUN   TestGetFromSyntaxError/{
=== RUN   TestGetFromSyntaxError/[}
=== RUN   TestGetFromSyntaxError/{]
=== RUN   TestGetFromSyntaxError/{,}
=== RUN   TestGetFromSyntaxError/[,]
=== RUN   TestGetFromSyntaxError/tru
=== RUN   TestGetFromSyntaxError/fals
=== RUN   TestGetFromSyntaxError/nul
=== RUN   TestGetFromSyntaxError/{"a":"
=== RUN   TestGetFromSyntaxError/{"
=== RUN   TestGetFromSyntaxError/"
=== RUN   TestGetFromSyntaxError/"\"
=== RUN   TestGetFromSyntaxError/"\\\"
=== RUN   TestGetFromSyntaxError/"hello
=== RUN   TestGetFromSyntaxError/{{}}
=== RUN   TestGetFromSyntaxError/{[]}
=== RUN   TestGetFromSyntaxError/{:,}
=== RUN   TestGetFromSyntaxError/{test:error}
=== RUN   TestGetFromSyntaxError/{":true}
=== RUN   TestGetFromSyntaxError/{""_false}
=== RUN   TestGetFromSyntaxError/{_""_:_"false_}
=== RUN   TestGetFromSyntaxError/{"":"",}
=== RUN   TestGetFromSyntaxError/{_"_test_:_true}
=== RUN   TestGetFromSyntaxError/{_"test"_:_tru_}
=== RUN   TestGetFromSyntaxError/{_"test"_:_true_,_}
=== RUN   TestGetFromSyntaxError/{_{"test"_:_true_,_}_}
=== RUN   TestGetFromSyntaxError/{"test":1._}
=== RUN   TestGetFromSyntaxError/{"\\\""
=== RUN   TestGetFromSyntaxError/{"\\\"":
=== RUN   TestGetFromSyntaxError/{"\\\":",""}
=== RUN   TestGetFromSyntaxError/[{]
=== RUN   TestGetFromSyntaxError/[tru]
=== RUN   TestGetFromSyntaxError/[-1.]
=== RUN   TestGetFromSyntaxError/[[]
=== RUN   TestGetFromSyntaxError/[[],
=== RUN   TestGetFromSyntaxError/[_true_,_false_,_[_]
=== RUN   TestGetFromSyntaxError/[true,_false,_[],
=== RUN   TestGetFromSyntaxError/[true,_false,_[],]
=== RUN   TestGetFromSyntaxError/{"key":_[true,_false,_[]],_"key2":_{{}}
--- PASS: TestGetFromSyntaxError (0.03s)
    --- PASS: TestGetFromSyntaxError/_____ (0.00s)
    --- PASS: TestGetFromSyntaxError/123. (0.00s)
    --- PASS: TestGetFromSyntaxError/+124 (0.00s)
    --- PASS: TestGetFromSyntaxError/- (0.00s)
    --- PASS: TestGetFromSyntaxError/-e123 (0.00s)
    --- PASS: TestGetFromSyntaxError/-1.e123 (0.00s)
    --- PASS: TestGetFromSyntaxError/-12e456.1 (0.00s)
    --- PASS: TestGetFromSyntaxError/-12e.1 (0.00s)
    --- PASS: TestGetFromSyntaxError/[ (0.00s)
    --- PASS: TestGetFromSyntaxError/{ (0.00s)
    --- PASS: TestGetFromSyntaxError/[} (0.00s)
    --- PASS: TestGetFromSyntaxError/{] (0.00s)
    --- PASS: TestGetFromSyntaxError/{,} (0.00s)
    --- PASS: TestGetFromSyntaxError/[,] (0.00s)
    --- PASS: TestGetFromSyntaxError/tru (0.00s)
    --- PASS: TestGetFromSyntaxError/fals (0.00s)
    --- PASS: TestGetFromSyntaxError/nul (0.00s)
    --- PASS: TestGetFromSyntaxError/{"a":" (0.00s)
    --- PASS: TestGetFromSyntaxError/{" (0.00s)
    --- PASS: TestGetFromSyntaxError/" (0.00s)
    --- PASS: TestGetFromSyntaxError/"\" (0.00s)
    --- PASS: TestGetFromSyntaxError/"\\\" (0.00s)
    --- PASS: TestGetFromSyntaxError/"hello (0.00s)
    --- PASS: TestGetFromSyntaxError/{{}} (0.00s)
    --- PASS: TestGetFromSyntaxError/{[]} (0.00s)
    --- PASS: TestGetFromSyntaxError/{:,} (0.00s)
    --- PASS: TestGetFromSyntaxError/{test:error} (0.00s)
    --- PASS: TestGetFromSyntaxError/{":true} (0.00s)
    --- PASS: TestGetFromSyntaxError/{""_false} (0.00s)
    --- PASS: TestGetFromSyntaxError/{_""_:_"false_} (0.00s)
    --- PASS: TestGetFromSyntaxError/{"":"",} (0.00s)
    --- PASS: TestGetFromSyntaxError/{_"_test_:_true} (0.00s)
    --- PASS: TestGetFromSyntaxError/{_"test"_:_tru_} (0.00s)
    --- PASS: TestGetFromSyntaxError/{_"test"_:_true_,_} (0.00s)
    --- PASS: TestGetFromSyntaxError/{_{"test"_:_true_,_}_} (0.00s)
    --- PASS: TestGetFromSyntaxError/{"test":1._} (0.00s)
    --- PASS: TestGetFromSyntaxError/{"\\\"" (0.00s)
    --- PASS: TestGetFromSyntaxError/{"\\\"": (0.00s)
    --- PASS: TestGetFromSyntaxError/{"\\\":",""} (0.00s)
    --- PASS: TestGetFromSyntaxError/[{] (0.00s)
    --- PASS: TestGetFromSyntaxError/[tru] (0.00s)
    --- PASS: TestGetFromSyntaxError/[-1.] (0.00s)
    --- PASS: TestGetFromSyntaxError/[[] (0.00s)
    --- PASS: TestGetFromSyntaxError/[[], (0.00s)
    --- PASS: TestGetFromSyntaxError/[_true_,_false_,_[_] (0.00s)
    --- PASS: TestGetFromSyntaxError/[true,_false,_[], (0.00s)
    --- PASS: TestGetFromSyntaxError/[true,_false,_[],] (0.00s)
    --- PASS: TestGetFromSyntaxError/{"key":_[true,_false,_[]],_"key2":_{{}} (0.00s)
=== RUN   TestGetWithInvalidUndemandedField
=== RUN   TestGetWithInvalidUndemandedField/-0xyz
=== RUN   TestGetWithInvalidUndemandedField/-12e4xyz
=== RUN   TestGetWithInvalidUndemandedField/truex
=== RUN   TestGetWithInvalidUndemandedField/false,
=== RUN   TestGetWithInvalidUndemandedField/{"a":{,xxx},"b":true}
=== RUN   TestGetWithInvalidUndemandedField/{"a":[,xxx],"b":true}
--- PASS: TestGetWithInvalidUndemandedField (0.00s)
    --- PASS: TestGetWithInvalidUndemandedField/-0xyz (0.00s)
    --- PASS: TestGetWithInvalidUndemandedField/-12e4xyz (0.00s)
    --- PASS: TestGetWithInvalidUndemandedField/truex (0.00s)
    --- PASS: TestGetWithInvalidUndemandedField/false, (0.00s)
    --- PASS: TestGetWithInvalidUndemandedField/{"a":{,xxx},"b":true} (0.00s)
    --- PASS: TestGetWithInvalidUndemandedField/{"a":[,xxx],"b":true} (0.00s)
=== RUN   TestGet_InvalidPathType
--- PASS: TestGet_InvalidPathType (0.00s)
=== RUN   TestForEach
{"array":[0,1,2], "object":{"k0":0,"k1":1,"k2":2}}
--- PASS: TestForEach (0.00s)
=== RUN   TestRawIterator
{"array":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15], "object":{"k0":0,"k1":1,"k2":2,"k3":3,"k4":4,"k5":5,"k6":6,"k7":7,"k8":8,"k9":9,"k10":10,"k11":11,"k12":12,"k13":13,"k14":14,"k15":15}}
--- PASS: TestRawIterator (0.00s)
=== RUN   TestIterator
{"array":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15], "object":{"k0":0,"k1":1,"k2":2,"k3":3,"k4":4,"k5":5,"k6":6,"k7":7,"k8":8,"k9":9,"k10":10,"k11":11,"k12":12,"k13":13,"k14":14,"k15":15}}
--- PASS: TestIterator (0.00s)
=== RUN   TestExist
--- PASS: TestExist (0.00s)
=== RUN   TestNodeSortKeys
--- PASS: TestNodeSortKeys (0.00s)
=== RUN   TestNodeSortKeys2
=== RUN   TestNodeSortKeys2/single
=== RUN   TestNodeSortKeys2/recurse
--- PASS: TestNodeSortKeys2 (0.00s)
    --- PASS: TestNodeSortKeys2/single (0.00s)
    --- PASS: TestNodeSortKeys2/recurse (0.00s)
=== RUN   TestLoadAll
--- PASS: TestLoadAll (0.00s)
=== RUN   TestIndexPair
--- PASS: TestIndexPair (0.00s)
=== RUN   TestIndexOrGet
--- PASS: TestIndexOrGet (0.00s)
=== RUN   TestIndexOrGetWithIdx
--- PASS: TestIndexOrGetWithIdx (0.00s)
=== RUN   TestTypeCast
0 {Interface {0 0 <nil> <nil>} <nil> 0xc000299600}
1 {Interface {33 1 0x8b01f8 <nil>} 1 <nil>}
2 {Interface {34 0 0xc0017bc0d0 <nil>} 1 <nil>}
3 {Interface {33 1 0x8b01f8 <nil>} 1 <nil>}
4 {InterfaceUseNode {0 0 <nil> <nil>} {0 0 <nil> <nil>} <nil>}
5 {InterfaceUseNode {34 0 0xc0017bc0b0 <nil>} {34 0 0xc0017bc0b0 <nil>} <nil>}
6 {InterfaceUseNode {33 1 0x8b01f8 <nil>} {33 1 0x8b01f8 <nil>} <nil>}
7 {InterfaceUseNumber {0 0 <nil> <nil>} <nil> 0xc000299600}
8 {InterfaceUseNumber {34 0 0xc0017bc0e0 <nil>} 1 <nil>}
9 {InterfaceUseNumber {33 1 0x8b01f8 <nil>} 1 <nil>}
10 {Map {0 0 <nil> <nil>} map[] 0xc000299600}
11 {Map {34 0 0xc0017bc0f0 <nil>} map[] 0xc000299600}
12 {Map {34 0 0xc0017bc100 <nil>} map[a:1] <nil>}
13 {Map {6 1 0xc001390408 <nil>} map[a:1] <nil>}
14 {MapUseNode {0 0 <nil> <nil>} map[] 0xc000299600}
15 {MapUseNode {34 0 0xc0017bc110 <nil>} map[] 0xc000299600}
16 {MapUseNode {34 0 0xc0017bc120 <nil>} map[a:{33 1 0x8b01f8 <nil>}] <nil>}
17 {MapUseNode {6 1 0xc001390808 <nil>} map[a:{33 1 0x8b01f8 <nil>}] <nil>}
18 {MapUseNumber {0 0 <nil> <nil>} map[] 0xc000299600}
19 {MapUseNumber {34 0 0xc0017bc130 <nil>} map[a:1] <nil>}
20 {MapUseNumber {6 1 0xc001390c08 <nil>} map[a:1] <nil>}
21 {Array {0 0 <nil> <nil>} [] 0xc000299600}
22 {Array {34 0 0xc0017bc140 <nil>} [1] <nil>}
23 {Array {5 1 0xc001394008 <nil>} [1] <nil>}
24 {ArrayUseNode {0 0 <nil> <nil>} [] 0xc000299600}
25 {ArrayUseNode {34 0 0xc0017bc160 <nil>} [] 0xc000299600}
26 {ArrayUseNode {34 0 0xc0017bc180 <nil>} [{33 1 0x8b01f8 <nil>}] <nil>}
27 {ArrayUseNode {5 1 0xc001394248 <nil>} [{33 1 0x8b01f8 <nil>}] <nil>}
28 {ArrayUseNumber {0 0 <nil> <nil>} [] 0xc000299600}
29 {ArrayUseNumber {34 0 0xc0017bc190 <nil>} [1] <nil>}
30 {ArrayUseNumber {34 0 0xc0017bc1b0 <nil>} [] 0xc000299600}
31 {ArrayUseNumber {5 1 0xc001394488 <nil>} [1] <nil>}
32 {Raw {0 0 <nil> <nil>}  0xc0002995e0}
33 {Raw {1 1 0xc0035a8090 <nil>}  0xc0017bc0a0}
34 {Raw {261 3 0x76028b <nil>} [ ] <nil>}
35 {Raw {261 3 0x75ec2b <nil>} [ ] <nil>}
36 {Raw {262 27 0x7748f3 <nil>} { "a" : [ true, -1.2e34 ] } <nil>}
37 {Raw {1 1 0xc0000300e0 <nil>}  0xc0017bc0a0}
38 {Raw {1 2 0xc0000300f0 <nil>}  0xc0017bc0a0}
39 {Raw {3 0 <nil> <nil>} true <nil>}
40 {Raw {33 4 0x75f43e <nil>} -0.0 <nil>}
41 {Raw {7 0 <nil> <nil>} "" <nil>}
42 {Raw {7 16 0xc00021c250 <nil>} "aGVsbG8sIHdvcmxk" <nil>}
43 {Bool {0 0 <nil> <nil>} false 0xc000299600}
44 {Bool {34 0 0xc000030100 <nil>} true <nil>}
45 {Bool {34 0 0xc000030110 <nil>} false <nil>}
46 {Bool {34 0 0xc000030130 <nil>} false <nil>}
47 {Bool {34 0 0xc000030180 <nil>} true <nil>}
48 {Bool {34 0 0xc000030190 <nil>} true <nil>}
49 {Bool {34 0 0xc0000301a0 <nil>} true <nil>}
50 {Bool {34 0 0xc0000301b0 <nil>} true <nil>}
51 {Bool {34 0 0xc0000301c0 <nil>} true <nil>}
52 {Bool {34 0 0xc0000301d0 <nil>} true <nil>}
53 {Bool {34 0 0xc0000301e0 <nil>} true <nil>}
54 {Bool {34 0 0xc0000301f0 <nil>} true <nil>}
55 {Bool {34 0 0xc000030200 <nil>} false <nil>}
56 {Bool {34 0 0xc000030210 <nil>} true <nil>}
57 {Bool {34 0 0xc000030220 <nil>} true <nil>}
58 {Bool {34 0 0xc000030230 <nil>} false <nil>}
59 {Bool {34 0 0xc000030240 <nil>} true <nil>}
60 {Bool {34 0 0xc000030250 <nil>} true <nil>}
61 {Bool {34 0 0xc000030260 <nil>} false 0xc0017bc0a0}
62 {Bool {34 0 0xc000030270 <nil>} false <nil>}
63 {Bool {34 0 0xc000030280 <nil>} true <nil>}
64 {Bool {34 0 0xc000030290 <nil>} false 0xc0017bc0a0}
65 {Bool {259 4 0x75f426 <nil>} true <nil>}
66 {Bool {260 5 0x76021c <nil>} false <nil>}
67 {Bool {258 4 0x75f436 <nil>} false <nil>}
68 {Bool {7 4 0x75f426 <nil>} true <nil>}
69 {Bool {7 5 0x76021c <nil>} false <nil>}
70 {Bool {7 0 <nil> <nil>} false 0xc0017bc0a0}
71 {Bool {33 1 0x8b0008 <nil>} true <nil>}
72 {Bool {33 4 0x75f47a <nil>} true <nil>}
73 {Bool {33 6 0x76173f <nil>} false 0xc0017bc0a0}
74 {StrictBool {4 0 <nil> <nil>} false <nil>}
75 {StrictBool {3 0 <nil> <nil>} true <nil>}
76 {StrictBool {258 4 0x75f436 <nil>} false 0xc000299600}
77 {StrictBool {34 0 0xc0000302a0 <nil>} true <nil>}
78 {StrictBool {34 0 0xc0000302b0 <nil>} false <nil>}
79 {StrictBool {34 0 0xc0000302c0 <nil>} false 0xc000299600}
80 {Int64 {259 4 0x75f426 <nil>} 1 <nil>}
81 {Int64 {260 5 0x76021c <nil>} 0 <nil>}
82 {Int64 {263 3 0x75ec04 <nil>} 1 <nil>}
83 {Int64 {263 5 0x76028f <nil>} 1 <nil>}
84 {Int64 {263 5 0x760294 <nil>} 1 <nil>}
85 {Int64 {33 4 0x75f47e <nil>} 0 0xc0017bc0a0}
86 {Int64 {34 0 0xc0000302d0 <nil>} 0 <nil>}
87 {Int64 {34 0 0xc0000302e0 <nil>} 1 <nil>}
88 {Int64 {34 0 0xc0000302f0 <nil>} 1 <nil>}
89 {Int64 {34 0 0xc000030300 <nil>} 1 <nil>}
90 {Int64 {34 0 0xc000030310 <nil>} 1 <nil>}
91 {Int64 {34 0 0xc000030320 <nil>} 1 <nil>}
92 {Int64 {34 0 0xc000030330 <nil>} 1 <nil>}
93 {Int64 {34 0 0xc000030340 <nil>} 1 <nil>}
94 {Int64 {34 0 0xc000030350 <nil>} 1 <nil>}
95 {Int64 {34 0 0xc000030360 <nil>} 1 <nil>}
96 {Int64 {34 0 0xc000030370 <nil>} 1 <nil>}
97 {Int64 {34 0 0xc000030380 <nil>} 1 <nil>}
98 {Int64 {34 0 0xc000030390 <nil>} 1 <nil>}
99 {Int64 {34 0 0xc0000303a0 <nil>} 1 <nil>}
100 {Int64 {34 0 0xc0000303b0 <nil>} 1 <nil>}
101 {Int64 {34 0 0xc0000303c0 <nil>} 0 0xc0017bc0a0}
102 {Int64 {34 0 0xc0000303d0 <nil>} 1 <nil>}
103 {Int64 {34 0 0xc0000303e0 <nil>} 1 <nil>}
104 {Int64 {34 0 0xc0000303f0 <nil>} 0 0xc0017bc0a0}
105 {Int64 {34 0 0xc000030400 <nil>} 0 0xc000299600}
106 {Int64 {0 0 <nil> <nil>} 0 0xc000299600}
107 {Int64 {289 1 0x8afff8 <nil>} 0 <nil>}
108 {Int64 {258 4 0x75f436 <nil>} 0 <nil>}
109 {StrictInt64 {259 4 0x75f426 <nil>} 0 0xc000299600}
110 {StrictInt64 {260 5 0x76021c <nil>} 0 0xc000299600}
111 {StrictInt64 {34 0 0xc000030410 <nil>} 0 <nil>}
112 {StrictInt64 {34 0 0xc000030590 <nil>} 0 <nil>}
113 {StrictInt64 {34 0 0xc0000305a0 <nil>} 0 <nil>}
114 {StrictInt64 {34 0 0xc0000305b0 <nil>} 0 <nil>}
115 {StrictInt64 {34 0 0xc0000305c0 <nil>} 0 <nil>}
116 {StrictInt64 {34 0 0xc0000305d0 <nil>} 0 <nil>}
117 {StrictInt64 {34 0 0xc0000305e0 <nil>} 0 <nil>}
118 {StrictInt64 {34 0 0xc0000305f0 <nil>} 0 <nil>}
119 {StrictInt64 {34 0 0xc000030600 <nil>} 0 <nil>}
120 {StrictInt64 {0 0 <nil> <nil>} 0 0xc000299600}
121 {StrictInt64 {289 1 0x8afff8 <nil>} 0 <nil>}
122 {StrictInt64 {258 4 0x75f436 <nil>} 0 0xc000299600}
123 {Float64 {259 4 0x75f426 <nil>} 1 <nil>}
124 {Float64 {260 5 0x76021c <nil>} 0 <nil>}
125 {Float64 {263 5 0x760294 <nil>} 1 <nil>}
126 {Float64 {263 4 0x75f482 <nil>} 0 0xc0017bc0a0}
127 {Float64 {0 0 <nil> <nil>} 0 0xc000299600}
128 {Float64 {34 0 0xc000030610 <nil>} 0 <nil>}
129 {Float64 {34 0 0xc000030620 <nil>} 1 <nil>}
130 {Float64 {34 0 0xc000030630 <nil>} 1 <nil>}
131 {Float64 {34 0 0xc000030640 <nil>} 1 <nil>}
132 {Float64 {34 0 0xc000030650 <nil>} 1 <nil>}
133 {Float64 {34 0 0xc000030660 <nil>} 1 <nil>}
134 {Float64 {34 0 0xc000030670 <nil>} 1 <nil>}
135 {Float64 {34 0 0xc000030680 <nil>} 1 <nil>}
136 {Float64 {34 0 0xc000030690 <nil>} 1 <nil>}
137 {Float64 {34 0 0xc0000306a0 <nil>} 1 <nil>}
138 {Float64 {34 0 0xc0000306b0 <nil>} 1 <nil>}
139 {Float64 {34 0 0xc0000306c0 <nil>} 1 <nil>}
140 {Float64 {34 0 0xc0000306d0 <nil>} 1 <nil>}
141 {Float64 {34 0 0xc0000306e0 <nil>} 1.1 <nil>}
142 {Float64 {34 0 0xc0000306f0 <nil>} 0 0xc0017bc0a0}
143 {Float64 {34 0 0xc000030700 <nil>} 0 <nil>}
144 {Float64 {34 0 0xc000030710 <nil>} 0 0xc0017bc0a0}
145 {Float64 {34 0 0xc000030720 <nil>} 0 0xc000299600}
146 {Float64 {289 3 0x75ec0d <nil>} 0 <nil>}
147 {Float64 {289 1 0x8b01f8 <nil>} 1 <nil>}
148 {Float64 {258 4 0x75f436 <nil>} 0 <nil>}
149 {StrictFloat64 {259 4 0x75f426 <nil>} 0 0xc000299600}
150 {StrictFloat64 {260 5 0x76021c <nil>} 0 0xc000299600}
151 {StrictFloat64 {0 0 <nil> <nil>} 0 0xc000299600}
152 {StrictFloat64 {34 0 0xc000030730 <nil>} 0 <nil>}
153 {StrictFloat64 {34 0 0xc000030740 <nil>} 0 <nil>}
154 {StrictFloat64 {289 3 0x75ec0d <nil>} 0 <nil>}
155 {StrictFloat64 {258 4 0x75f436 <nil>} 0 0xc000299600}
156 {Number {0 0 <nil> <nil>}  0xc000299600}
157 {Number {34 0 0xc000030750 <nil>} 0 <nil>}
158 {Number {34 0 0xc000030760 <nil>} 1 <nil>}
159 {Number {34 0 0xc000030770 <nil>} 1 <nil>}
160 {Number {34 0 0xc000030780 <nil>} 1 <nil>}
161 {Number {34 0 0xc000030790 <nil>} 1 <nil>}
162 {Number {34 0 0xc0000307a0 <nil>} 1 <nil>}
163 {Number {34 0 0xc0000307b0 <nil>} 1 <nil>}
164 {Number {34 0 0xc0000307c0 <nil>} 1 <nil>}
165 {Number {34 0 0xc0000307d0 <nil>} 1 <nil>}
166 {Number {34 0 0xc0000307e0 <nil>} 1 <nil>}
167 {Number {34 0 0xc0000307f0 <nil>} 1 <nil>}
168 {Number {34 0 0xc000030800 <nil>} 1 <nil>}
169 {Number {34 0 0xc000030810 <nil>} 1 <nil>}
170 {Number {34 0 0xc000030820 <nil>} 1.1 <nil>}
171 {Number {34 0 0xc000030830 <nil>}  0xc0017bc0a0}
172 {Number {34 0 0xc000030840 <nil>} 0 <nil>}
173 {Number {34 0 0xc000030850 <nil>} x <nil>}
174 {Number {34 0 0xc000030860 <nil>} +1x.1 <nil>}
175 {Number {34 0 0xc000030870 <nil>}  0xc000299600}
176 {Number {1 2 0xc000030880 <nil>}  0xc0017bc0a0}
177 {Number {289 3 0x75ec0d <nil>} 0.0 <nil>}
178 {Number {263 3 0x75ec04 <nil>} 1 <nil>}
179 {Number {263 5 0x76028f <nil>} 1.1 <nil>}
180 {Number {263 6 0x761745 <nil>}  0xc0017bc0a0}
181 {Number {1 2 0xc000030890 <nil>}  0xc0017bc0a0}
182 {Number {259 4 0x75f426 <nil>} 1 <nil>}
183 {Number {260 5 0x76021c <nil>} 0 <nil>}
184 {Number {258 4 0x75f436 <nil>} 0 <nil>}
185 {StrictNumber {259 4 0x75f426 <nil>}  0xc000299600}
186 {StrictNumber {260 5 0x76021c <nil>}  0xc000299600}
187 {StrictNumber {0 0 <nil> <nil>}  0xc000299600}
188 {StrictNumber {34 0 0xc0000308a0 <nil>} 0 <nil>}
189 {StrictNumber {289 3 0x75ec0d <nil>} 0.0 <nil>}
190 {StrictNumber {258 4 0x75f436 <nil>}  0xc000299600}
191 {String {0 0 <nil> <nil>}  0xc000299600}
192 {String {34 0 0xc0000308b0 <nil>} \u263a <nil>}
193 {String {263 8 0x7644c7 <nil>} ☺ <nil>}
194 {String {7 6 0x761715 <nil>} \u263a <nil>}
195 {String {289 3 0x75ec0d <nil>} 0.0 <nil>}
196 {String {259 4 0x75f426 <nil>} true <nil>}
197 {String {260 5 0x76021c <nil>} false <nil>}
198 {String {258 4 0x75f436 <nil>}  <nil>}
199 {String {34 0 0xc0000308c0 <nil>} false <nil>}
200 {String {34 0 0xc0000308d0 <nil>} true <nil>}
201 {String {34 0 0xc0000308e0 <nil>} 1 <nil>}
202 {String {34 0 0xc0000308f0 <nil>} 1 <nil>}
203 {String {34 0 0xc000030900 <nil>} 1 <nil>}
204 {String {34 0 0xc000030910 <nil>} 1 <nil>}
205 {String {34 0 0xc000030920 <nil>} 1 <nil>}
206 {String {34 0 0xc000030930 <nil>} 1 <nil>}
207 {String {34 0 0xc000030940 <nil>} 1 <nil>}
208 {String {34 0 0xc000030950 <nil>} 1 <nil>}
209 {String {34 0 0xc000030960 <nil>} 1 <nil>}
210 {String {34 0 0xc000030970 <nil>} 1 <nil>}
211 {String {34 0 0xc000030980 <nil>} 1 <nil>}
212 {String {34 0 0xc000030990 <nil>} 1.1 <nil>}
213 {String {34 0 0xc0000309d0 <nil>} +1x.1 <nil>}
214 {String {34 0 0xc0000309e0 <nil>} 0 <nil>}
215 {String {34 0 0xc0000309f0 <nil>} x <nil>}
216 {String {34 0 0xc000030a00 <nil>}  0xc000299600}
217 {StrictString {0 0 <nil> <nil>}  0xc000299600}
218 {StrictString {34 0 0xc000030a10 <nil>} \u263a <nil>}
219 {StrictString {263 8 0x7644c7 <nil>} ☺ <nil>}
220 {StrictString {7 6 0x761715 <nil>} \u263a <nil>}
221 {StrictString {289 3 0x75ec0d <nil>}  0xc000299600}
222 {StrictString {259 4 0x75f426 <nil>}  0xc000299600}
223 {StrictString {260 5 0x76021c <nil>}  0xc000299600}
224 {StrictString {258 4 0x75f436 <nil>}  0xc000299600}
225 {Len {0 0 <nil> <nil>} 0 <nil>}
226 {Len {34 0 0xc000030a20 <nil>} 0 0xc000299600}
227 {Len {2 0 <nil> <nil>} 0 <nil>}
228 {Len {263 3 0x75ec04 <nil>} 1 <nil>}
229 {Len {261 3 0x75ec31 <nil>} 0 <nil>}
230 {Len {5 1 0xc0013946c8 <nil>} 1 <nil>}
231 {Len {133 0 0xc0019b4288 <nil>} 0 <nil>}
232 {Len {262 7 0x762e53 <nil>} 0 <nil>}
233 {Len {134 0 0xc001390008 <nil>} 0 <nil>}
234 {Cap {0 0 <nil> <nil>} 0 <nil>}
235 {Cap {34 0 0xc000030a30 <nil>} 0 0xc000299600}
236 {Cap {2 0 <nil> <nil>} 0 <nil>}
237 {Cap {261 3 0x75ec31 <nil>} 16 <nil>}
238 {Cap {6 1 0xc0002fd808 <nil>} 16 <nil>}
239 {Cap {262 7 0x762e53 <nil>} 16 <nil>}
240 {Len {5 17 0xc0019b42b0 <nil>} 17 <nil>}
241 {Len {6 17 0xc001390030 <nil>} 17 <nil>}
242 {Cap {5 17 0xc0019b42b0 <nil>} 32 <nil>}
243 {Cap {6 17 0xc001390030 <nil>} 32 <nil>}
--- PASS: TestTypeCast (0.02s)
=== RUN   TestCheckError_Nil
--- PASS: TestCheckError_Nil (0.00s)
=== RUN   TestCheckError_None
--- PASS: TestCheckError_None (0.00s)
=== RUN   TestCheckError_Error
--- PASS: TestCheckError_Error (0.00s)
=== RUN   TestCheckError_Empty
Syntax error at index 17: invalid char

        "a":{}, "b":talse, "c":{}}
        ................^.........

"Syntax error at index 17: invalid char\n\n\t\"a\":{}, \"b\":talse, \"c\":{}}\n\t................^.........\n"
--- PASS: TestCheckError_Empty (0.00s)
=== RUN   TestIndex
--- PASS: TestIndex (0.00s)
=== RUN   TestUnset
{"hashtags":[{"text":"freebandnames","indices":[20,34]}],"user_mentions":[]}
--- PASS: TestUnset (0.00s)
=== RUN   TestUseNode
--- PASS: TestUseNode (0.00s)
=== RUN   TestUseNumber
--- PASS: TestUseNumber (0.00s)
=== RUN   TestMap
--- PASS: TestMap (0.00s)
=== RUN   TestArray
--- PASS: TestArray (0.00s)
=== RUN   TestNodeRaw
--- PASS: TestNodeRaw (0.00s)
=== RUN   TestNodeGet
--- PASS: TestNodeGet (0.00s)
=== RUN   TestNodeIndex
--- PASS: TestNodeIndex (0.00s)
=== RUN   TestNodeGetByPath
--- PASS: TestNodeGetByPath (0.00s)
=== RUN   TestNodeSet
--- PASS: TestNodeSet (0.00s)
=== RUN   TestNodeSetByIndex
--- PASS: TestNodeSetByIndex (0.00s)
=== RUN   TestNodeAdd
--- PASS: TestNodeAdd (0.00s)
=== RUN   TestNode_Move
=== RUN   TestNode_Move/over_index
=== RUN   TestNode_Move/equal_index
=== RUN   TestNode_Move/forward
=== RUN   TestNode_Move/backward
=== RUN   TestNode_Move/lazy
=== RUN   TestNode_Move/unset_back
=== RUN   TestNode_Move/unset_forward
--- PASS: TestNode_Move (0.00s)
    --- PASS: TestNode_Move/over_index (0.00s)
    --- PASS: TestNode_Move/equal_index (0.00s)
    --- PASS: TestNode_Move/forward (0.00s)
    --- PASS: TestNode_Move/backward (0.00s)
    --- PASS: TestNode_Move/lazy (0.00s)
    --- PASS: TestNode_Move/unset_back (0.00s)
    --- PASS: TestNode_Move/unset_forward (0.00s)
=== RUN   TestNode_Pop
=== RUN   TestNode_Pop/empty
=== RUN   TestNode_Pop/one
=== RUN   TestNode_Pop/raw
=== RUN   TestNode_Pop/unset_head
=== RUN   TestNode_Pop/unset_tail
--- PASS: TestNode_Pop (0.00s)
    --- PASS: TestNode_Pop/empty (0.00s)
    --- PASS: TestNode_Pop/one (0.00s)
    --- PASS: TestNode_Pop/raw (0.00s)
    --- PASS: TestNode_Pop/unset_head (0.00s)
    --- PASS: TestNode_Pop/unset_tail (0.00s)
=== RUN   TestGC_Parse
--- PASS: TestGC_Parse (0.32s)
=== RUN   TestParser_Basic
--- PASS: TestParser_Basic (0.00s)
=== RUN   TestLoads
--- PASS: TestLoads (0.00s)
=== RUN   TestParsehNotExist
--- PASS: TestParsehNotExist (0.00s)
=== RUN   TestGC_Search
--- PASS: TestGC_Search (0.49s)
=== RUN   TestNodeRace
--- PASS: TestNodeRace (0.03s)
=== RUN   TestExportErrorInvalidChar
--- PASS: TestExportErrorInvalidChar (0.00s)
=== RUN   TestExportErrNotExist
=== RUN   TestExportErrNotExist/{}
=== RUN   TestExportErrNotExist/_{__}_
=== RUN   TestExportErrNotExist/{"a":null}
=== RUN   TestExportErrNotExist/{"":{"b":123}}
=== RUN   TestExportErrNotExist/{"":{"b":123}}#01
=== RUN   TestExportErrNotExist/{"a":{"b":123}}
=== RUN   TestExportErrNotExist/{"a":{"b":123}}#01
=== RUN   TestExportErrNotExist/{"a":{"c":_null,_"b":{}}}
=== RUN   TestExportErrNotExist/{"a":{"b":123}}#02
=== RUN   TestExportErrNotExist/{"\"\\":{"b":123}}
=== RUN   TestExportErrNotExist/{"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"\\":{"b":123}}
=== RUN   TestExportErrNotExist/[]
=== RUN   TestExportErrNotExist/[]#01
=== RUN   TestExportErrNotExist/_[_]_
=== RUN   TestExportErrNotExist/[null]
=== RUN   TestExportErrNotExist/[null,_["null",_123]]
=== RUN   TestExportErrNotExist/[null,_true_,_false,_14,_2.35,_-46,_"hello7",_"\"8"]
=== RUN   TestExportErrNotExist/[{}]
=== RUN   TestExportErrNotExist/[[]]
=== RUN   TestExportErrNotExist/[[],[{},{},_[]],{}]
--- PASS: TestExportErrNotExist (0.01s)
    --- PASS: TestExportErrNotExist/{} (0.00s)
    --- PASS: TestExportErrNotExist/_{__}_ (0.00s)
    --- PASS: TestExportErrNotExist/{"a":null} (0.00s)
    --- PASS: TestExportErrNotExist/{"":{"b":123}} (0.00s)
    --- PASS: TestExportErrNotExist/{"":{"b":123}}#01 (0.00s)
    --- PASS: TestExportErrNotExist/{"a":{"b":123}} (0.00s)
    --- PASS: TestExportErrNotExist/{"a":{"b":123}}#01 (0.00s)
    --- PASS: TestExportErrNotExist/{"a":{"c":_null,_"b":{}}} (0.00s)
    --- PASS: TestExportErrNotExist/{"a":{"b":123}}#02 (0.00s)
    --- PASS: TestExportErrNotExist/{"\"\\":{"b":123}} (0.00s)
    --- PASS: TestExportErrNotExist/{"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"\\":{"b":123}} (0.00s)
    --- PASS: TestExportErrNotExist/[] (0.00s)
    --- PASS: TestExportErrNotExist/[]#01 (0.00s)
    --- PASS: TestExportErrNotExist/_[_]_ (0.00s)
    --- PASS: TestExportErrNotExist/[null] (0.00s)
    --- PASS: TestExportErrNotExist/[null,_["null",_123]] (0.00s)
    --- PASS: TestExportErrNotExist/[null,_true_,_false,_14,_2.35,_-46,_"hello7",_"\"8"] (0.00s)
    --- PASS: TestExportErrNotExist/[{}] (0.00s)
    --- PASS: TestExportErrNotExist/[[]] (0.00s)
    --- PASS: TestExportErrNotExist/[[],[{},{},_[]],{}] (0.00s)
=== RUN   TestSearcher_GetByPath
--- PASS: TestSearcher_GetByPath (0.00s)
=== RUN   TestSearch_LoadRawNumber
--- PASS: TestSearch_LoadRawNumber (0.00s)
=== RUN   TestSearcher_GetByPathSingle
=== RUN   TestSearcher_GetByPathSingle/true
=== RUN   TestSearcher_GetByPathSingle/false
=== RUN   TestSearcher_GetByPathSingle/null
=== RUN   TestSearcher_GetByPathSingle/12345
=== RUN   TestSearcher_GetByPathSingle/12345.6789
=== RUN   TestSearcher_GetByPathSingle/"abc"
=== RUN   TestSearcher_GetByPathSingle/"a\"\\bc"
=== RUN   TestSearcher_GetByPathSingle/{"a":1}
=== RUN   TestSearcher_GetByPathSingle/{"":1}
=== RUN   TestSearcher_GetByPathSingle/{"":{"":1}}
=== RUN   TestSearcher_GetByPathSingle/[1,2,3]
=== RUN   TestSearcher_GetByPathSingle/[1,2,3]#01
=== RUN   TestSearcher_GetByPathSingle/[1,2,3]#02
=== RUN   TestSearcher_GetByPathSingle/tru
=== RUN   TestSearcher_GetByPathSingle/fal
=== RUN   TestSearcher_GetByPathSingle/nul
=== RUN   TestSearcher_GetByPathSingle/{"a":1
=== RUN   TestSearcher_GetByPathSingle/x12345.6789
=== RUN   TestSearcher_GetByPathSingle/"abc
=== RUN   TestSearcher_GetByPathSingle/"a\"\\bc
=== RUN   TestSearcher_GetByPathSingle/"a\"\
=== RUN   TestSearcher_GetByPathSingle/{"a":
=== RUN   TestSearcher_GetByPathSingle/[1,2,3]#03
=== RUN   TestSearcher_GetByPathSingle/[1,2,3]#04
--- PASS: TestSearcher_GetByPathSingle (0.01s)
    --- PASS: TestSearcher_GetByPathSingle/true (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/false (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/null (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/12345 (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/12345.6789 (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/"abc" (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/"a\"\\bc" (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/{"a":1} (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/{"":1} (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/{"":{"":1}} (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/[1,2,3] (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/[1,2,3]#01 (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/[1,2,3]#02 (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/tru (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/fal (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/nul (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/{"a":1 (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/x12345.6789 (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/"abc (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/"a\"\\bc (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/"a\"\ (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/{"a": (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/[1,2,3]#03 (0.00s)
    --- PASS: TestSearcher_GetByPathSingle/[1,2,3]#04 (0.00s)
=== RUN   TestSearcher_GetByPathErr
--- PASS: TestSearcher_GetByPathErr (0.00s)
=== RUN   TestLoadIndex
--- PASS: TestLoadIndex (0.00s)
=== RUN   TestSearchNotExist
--- PASS: TestSearchNotExist (0.00s)
=== RUN   TestVisitor_NodeDiff
=== RUN   TestVisitor_NodeDiff/default
=== RUN   TestVisitor_NodeDiff/issue_case01
=== RUN   TestVisitor_NodeDiff/issue653
--- PASS: TestVisitor_NodeDiff (0.04s)
    --- PASS: TestVisitor_NodeDiff/default (0.04s)
    --- PASS: TestVisitor_NodeDiff/issue_case01 (0.00s)
    --- PASS: TestVisitor_NodeDiff/issue653 (0.00s)
=== RUN   TestVisitor_UserNodeDiff
=== RUN   TestVisitor_UserNodeDiff/default
=== RUN   TestVisitor_UserNodeDiff/issue_case01
=== RUN   TestVisitor_UserNodeDiff/issue653
--- PASS: TestVisitor_UserNodeDiff (0.02s)
    --- PASS: TestVisitor_UserNodeDiff/default (0.01s)
    --- PASS: TestVisitor_UserNodeDiff/issue_case01 (0.00s)
    --- PASS: TestVisitor_UserNodeDiff/issue653 (0.01s)
=== RUN   TestVisitor_OpSkip
self.sp 0
arr self.sp 1
arr op skip
arr self.sp 2
arr finish op skip
self.sp 1
op skip
finish op skip
--- PASS: TestVisitor_OpSkip (0.00s)
PASS
ok      github.com/bytedance/sonic/ast  3.810s

@yupan14
Copy link
Author

yupan14 commented Feb 25, 2026

  • Decoder模块测试
  • 测试目录: decoder
  • 测试命令: go test -v -race ./...
Begin GC looping...
=== RUN   TestDecoder_OptionCaseSensitive
--- PASS: TestDecoder_OptionCaseSensitive (0.00s)
=== RUN   TestDecoder_MapWithIndirectElement
--- PASS: TestDecoder_MapWithIndirectElement (0.00s)
=== RUN   TestDecoder_OptionCaseSensitiveForManyKeys
--- PASS: TestDecoder_OptionCaseSensitiveForManyKeys (0.00s)
=== RUN   TestSkipMismatchTypeAmd64Error
=== RUN   TestSkipMismatchTypeAmd64Error/short_array
=== RUN   TestSkipMismatchTypeAmd64Error/int_
Mismatch type int64 with value array "at index 0: mismatched type with value\n\n\t[\"\"]\n\t^...\n" 123 123
=== RUN   TestSkipMismatchTypeAmd64Error/array
=== RUN   TestSkipMismatchTypeAmd64Error/map
=== RUN   TestSkipMismatchTypeAmd64Error/map_error
"Syntax error at index 12: expect a json key\n\n\t{\"true\" : { ],\"1\":1,\"2\" : true,\"\n\t............^...................\n"
invalid character ']' looking for beginning of object key string
--- PASS: TestSkipMismatchTypeAmd64Error (0.01s)
    --- PASS: TestSkipMismatchTypeAmd64Error/short_array (0.00s)
    --- PASS: TestSkipMismatchTypeAmd64Error/int_ (0.00s)
    --- PASS: TestSkipMismatchTypeAmd64Error/array (0.00s)
    --- PASS: TestSkipMismatchTypeAmd64Error/map (0.00s)
    --- PASS: TestSkipMismatchTypeAmd64Error/map_error (0.00s)
=== RUN   TestCopyString
--- PASS: TestCopyString (0.01s)
=== RUN   TestDecoder_SetOption
--- PASS: TestDecoder_SetOption (0.00s)
=== RUN   TestGC
--- PASS: TestGC (3.16s)
=== RUN   TestSkipMismatchTypeError
=== RUN   TestSkipMismatchTypeError/struct
TestSkipError
json: invalid use of ,string struct tag, trying to unmarshal "1.0" into bool
=== RUN   TestSkipMismatchTypeError/short_array
=== RUN   TestSkipMismatchTypeError/int_
Mismatch type int64 with value array "at index 0: mismatched type with value\n\n\t[\"\"]\n\t^...\n" 123 123
=== RUN   TestSkipMismatchTypeError/array
=== RUN   TestSkipMismatchTypeError/map
=== RUN   TestSkipMismatchTypeError/map_error
"Syntax error at index 12: expect a json key\n\n\t{\"true\" : { ],\"1\":1,\"2\" : true,\"\n\t............^...................\n"
invalid character ']' looking for beginning of object key string
--- PASS: TestSkipMismatchTypeError (0.00s)
    --- PASS: TestSkipMismatchTypeError/struct (0.00s)
    --- PASS: TestSkipMismatchTypeError/short_array (0.00s)
    --- PASS: TestSkipMismatchTypeError/int_ (0.00s)
    --- PASS: TestSkipMismatchTypeError/array (0.00s)
    --- PASS: TestSkipMismatchTypeError/map (0.00s)
    --- PASS: TestSkipMismatchTypeError/map_error (0.00s)
=== RUN   TestDecodeCorrupt
--- PASS: TestDecodeCorrupt (0.00s)
=== RUN   TestDecodeOption
--- PASS: TestDecodeOption (0.00s)
=== RUN   TestDecoder_Basic
--- PASS: TestDecoder_Basic (0.00s)
=== RUN   TestDecoder_Generic
--- PASS: TestDecoder_Generic (0.00s)
=== RUN   TestDecoder_Binding
--- PASS: TestDecoder_Binding (0.00s)
PASS
ok      github.com/bytedance/sonic/decoder      4.476s

@yupan14
Copy link
Author

yupan14 commented Feb 25, 2026

  • Encoder模块测试
  • 测试目录: encoder
  • 测试命令: go test -v -race ./...
Begin GC looping...
=== RUN   TestOptionSliceOrMapNoNull
--- PASS: TestOptionSliceOrMapNoNull (0.16s)
=== RUN   TestEncoder_Marshaler
--- PASS: TestEncoder_Marshaler (0.06s)
=== RUN   TestMarshalerError
--- PASS: TestMarshalerError (0.01s)
=== RUN   TestEncoder_RawMessage
--- PASS: TestEncoder_RawMessage (0.02s)
=== RUN   TestEncoder_TextMarshaler
--- PASS: TestEncoder_TextMarshaler (0.05s)
=== RUN   TestEncoder_Marshal_EscapeHTML
--- PASS: TestEncoder_Marshal_EscapeHTML (0.13s)
=== RUN   TestEncoder_String
--- PASS: TestEncoder_String (0.00s)
=== RUN   TestEncoder_FieldStringize
...
--- PASS: TestEncoder_FieldStringize (0.06s)
=== RUN   TestEncodeErrorAndScratchBuf
--- PASS: TestEncodeErrorAndScratchBuf (0.06s)
=== RUN   TestTextMarshalTextKey_SortKeys
--- PASS: TestTextMarshalTextKey_SortKeys (0.17s)
=== RUN   TestEncoder_EscapeHTML
--- PASS: TestEncoder_EscapeHTML (0.00s)
=== RUN   TestEncoder_Marshal_EscapeHTML_LargeJson
--- PASS: TestEncoder_Marshal_EscapeHTML_LargeJson (0.62s)
=== RUN   TestEncoder_Generic
...
--- PASS: TestEncoder_Generic (0.06s)
=== RUN   TestEncoder_Binding
...
--- PASS: TestEncoder_Binding (0.69s)
=== RUN   TestEncoder_MapSortKey
--- PASS: TestEncoder_MapSortKey (0.00s)
PASS
ok      github.com/bytedance/sonic/encoder      3.139s

@yupan14
Copy link
Author

yupan14 commented Feb 25, 2026

  • 数据竞争测试
  • 测试目录: .
  • 测试命令: ./scripts/test_race.sh
++ dirname ./scripts/test_race.sh
+ source ./scripts/../scripts/go_flags.sh
++ set -xe
++ '[' -n '' ']'
++ _GO_FLAGS_LOADED=1
++ get_go_linkname_flag
++ command -v go
++ local go_version
+++ go version
+++ awk '{print $3}'
+++ sed -E 's/go([0-9]+\.[0-9]+(\.[0-9]+)?).*/\1/'
++ go_version=1.24.10
++ IFS=.
++ read -r major minor _
++ [[ 1 =~ ^[0-9]+$ ]]
++ [[ 24 =~ ^[0-9]+$ ]]
++ ((  major > 1 || (major == 1 && minor >= 23)  ))
++ echo -ldflags=-checklinkname=0
+ compile_flag=-ldflags=-checklinkname=0
+ cd ./issue_test
+ cp race_test_go race_test.go
+ go test -ldflags=-checklinkname=0 -v -run=TestRaceEncode -race -count=100 .
+ true
+ grep -q 'WARNING: DATA RACE' ./test_race.log
+ mv race_test.go race_test_go
+ rm -vrf test_race.log
removed 'test_race.log'

@yupan14
Copy link
Author

yupan14 commented Feb 25, 2026

  • 模糊测试
  • 测试目录: fuzz
  • 测试命令: go test -v -run=FuzzMain ./...
2026/02/25 17:04:19 [1143852] Memory Limit: 12 GB, Memory Threshold: 8601 MB
2026/02/25 17:04:19 [1143852] Memory Threshold Per Worker: 67 MB
2026/02/25 17:04:19 Begin GC looping...
=== RUN   FuzzMain
=== RUN   FuzzMain/seed#0
=== RUN   FuzzMain/seed#1
=== RUN   FuzzMain/seed#2
=== RUN   FuzzMain/seed#3
=== RUN   FuzzMain/seed#4
=== RUN   FuzzMain/seed#5
=== RUN   FuzzMain/seed#6
=== RUN   FuzzMain/seed#7
=== RUN   FuzzMain/seed#8
=== RUN   FuzzMain/seed#9
=== RUN   FuzzMain/seed#10
=== RUN   FuzzMain/seed#11
=== RUN   FuzzMain/seed#12
=== RUN   FuzzMain/seed#13
=== RUN   FuzzMain/seed#14
=== RUN   FuzzMain/seed#15
=== RUN   FuzzMain/seed#16
=== RUN   FuzzMain/seed#17
=== RUN   FuzzMain/seed#18
=== RUN   FuzzMain/seed#19
=== RUN   FuzzMain/seed#20
=== RUN   FuzzMain/seed#21
=== RUN   FuzzMain/seed#22
=== RUN   FuzzMain/seed#23
=== RUN   FuzzMain/seed#24
=== RUN   FuzzMain/seed#25
=== RUN   FuzzMain/seed#26
=== RUN   FuzzMain/seed#27
=== RUN   FuzzMain/seed#28
=== RUN   FuzzMain/seed#29
=== RUN   FuzzMain/seed#30
=== RUN   FuzzMain/seed#31
=== RUN   FuzzMain/seed#32
=== RUN   FuzzMain/seed#33
=== RUN   FuzzMain/seed#34
=== RUN   FuzzMain/seed#35
=== RUN   FuzzMain/seed#36
=== RUN   FuzzMain/seed#37
=== RUN   FuzzMain/seed#38
=== RUN   FuzzMain/seed#39
=== RUN   FuzzMain/seed#40
=== RUN   FuzzMain/seed#41
=== RUN   FuzzMain/seed#42
=== RUN   FuzzMain/seed#43
=== RUN   FuzzMain/seed#44
=== RUN   FuzzMain/seed#45
=== RUN   FuzzMain/seed#46
=== RUN   FuzzMain/seed#47
=== RUN   FuzzMain/seed#48
=== RUN   FuzzMain/seed#49
=== RUN   FuzzMain/seed#50
=== RUN   FuzzMain/seed#51
=== RUN   FuzzMain/seed#52
=== RUN   FuzzMain/seed#53
=== RUN   FuzzMain/seed#54
=== RUN   FuzzMain/seed#55
=== RUN   FuzzMain/seed#56
=== RUN   FuzzMain/seed#57
=== RUN   FuzzMain/seed#58
=== RUN   FuzzMain/seed#59
=== RUN   FuzzMain/seed#60
=== RUN   FuzzMain/seed#61
=== RUN   FuzzMain/seed#62
=== RUN   FuzzMain/seed#63
--- PASS: FuzzMain (0.14s)
    --- PASS: FuzzMain/seed#0 (0.02s)
    --- PASS: FuzzMain/seed#1 (0.03s)
    --- PASS: FuzzMain/seed#2 (0.00s)
    --- PASS: FuzzMain/seed#3 (0.00s)
    --- PASS: FuzzMain/seed#4 (0.00s)
    --- PASS: FuzzMain/seed#5 (0.00s)
    --- PASS: FuzzMain/seed#6 (0.00s)
    --- PASS: FuzzMain/seed#7 (0.01s)
    --- PASS: FuzzMain/seed#8 (0.01s)
    --- PASS: FuzzMain/seed#9 (0.00s)
    --- PASS: FuzzMain/seed#10 (0.00s)
    --- PASS: FuzzMain/seed#11 (0.00s)
    --- PASS: FuzzMain/seed#12 (0.00s)
    --- PASS: FuzzMain/seed#13 (0.00s)
    --- PASS: FuzzMain/seed#14 (0.00s)
    --- PASS: FuzzMain/seed#15 (0.00s)
    --- PASS: FuzzMain/seed#16 (0.00s)
    --- PASS: FuzzMain/seed#17 (0.00s)
    --- PASS: FuzzMain/seed#18 (0.00s)
    --- PASS: FuzzMain/seed#19 (0.00s)
    --- PASS: FuzzMain/seed#20 (0.00s)
    --- PASS: FuzzMain/seed#21 (0.00s)
    --- PASS: FuzzMain/seed#22 (0.00s)
    --- PASS: FuzzMain/seed#23 (0.00s)
    --- PASS: FuzzMain/seed#24 (0.00s)
    --- PASS: FuzzMain/seed#25 (0.00s)
    --- PASS: FuzzMain/seed#26 (0.00s)
    --- PASS: FuzzMain/seed#27 (0.00s)
    --- PASS: FuzzMain/seed#28 (0.00s)
    --- PASS: FuzzMain/seed#29 (0.00s)
    --- PASS: FuzzMain/seed#30 (0.00s)
    --- PASS: FuzzMain/seed#31 (0.00s)
    --- PASS: FuzzMain/seed#32 (0.00s)
    --- PASS: FuzzMain/seed#33 (0.00s)
    --- PASS: FuzzMain/seed#34 (0.00s)
    --- PASS: FuzzMain/seed#35 (0.00s)
    --- PASS: FuzzMain/seed#36 (0.00s)
    --- PASS: FuzzMain/seed#37 (0.00s)
    --- PASS: FuzzMain/seed#38 (0.00s)
    --- PASS: FuzzMain/seed#39 (0.00s)
    --- PASS: FuzzMain/seed#40 (0.00s)
    --- PASS: FuzzMain/seed#41 (0.00s)
    --- PASS: FuzzMain/seed#42 (0.00s)
    --- PASS: FuzzMain/seed#43 (0.00s)
    --- PASS: FuzzMain/seed#44 (0.00s)
    --- PASS: FuzzMain/seed#45 (0.00s)
    --- PASS: FuzzMain/seed#46 (0.00s)
    --- PASS: FuzzMain/seed#47 (0.00s)
    --- PASS: FuzzMain/seed#48 (0.00s)
    --- PASS: FuzzMain/seed#49 (0.00s)
    --- PASS: FuzzMain/seed#50 (0.00s)
    --- PASS: FuzzMain/seed#51 (0.01s)
    --- PASS: FuzzMain/seed#52 (0.00s)
    --- PASS: FuzzMain/seed#53 (0.00s)
    --- PASS: FuzzMain/seed#54 (0.00s)
    --- PASS: FuzzMain/seed#55 (0.00s)
    --- PASS: FuzzMain/seed#56 (0.00s)
    --- PASS: FuzzMain/seed#57 (0.00s)
    --- PASS: FuzzMain/seed#58 (0.00s)
    --- PASS: FuzzMain/seed#59 (0.00s)
    --- PASS: FuzzMain/seed#60 (0.00s)
    --- PASS: FuzzMain/seed#61 (0.00s)
    --- PASS: FuzzMain/seed#62 (0.00s)
    --- PASS: FuzzMain/seed#63 (0.01s)
PASS
ok      github.com/bytedance/sonic/fuzz 0.150s

@liuq19
Copy link
Collaborator

liuq19 commented Feb 27, 2026

主要发现了两点:

  1. bash build_tool.sh 没法在 macos 环境下构建,目前大部分开发环境都是 macos,估计该工具没有考虑兼容 Darwin 环境。建议添加个 定时 ci, 看是否可以在 macos-latest runner 下面跑一下构建流程
  2. 基于commit c8b5b78 的汇编产物,在 Mac M1 book 上面测试有报错
  3. rebase 一下 main 分支
internal/decoder/jitdec/asm_stubs_amd64_go121.go:30:12: undefined: _IC
internal/decoder/jitdec/asm_stubs_amd64_go121.go:38:13: undefined: _Assembler
internal/decoder/jitdec/asm_stubs_amd64_go121.go:61:13: undefined: _Assembler
internal/decoder/jitdec/asm_stubs_amd64_go121.go:87:13: undefined: _ValueDecoder
internal/decoder/jitdec/asm_stubs_amd64_go121.go:110:13: undefined: _ValueDecoder
internal/decoder/jitdec/debug.go:51:13: undefined: _Assembler
internal/decoder/jitdec/debug.go:56:13: undefined: _Assembler
internal/decoder/jitdec/pools.go:82:20: undefined array length _FP_offs or missing type constraint
internal/decoder/jitdec/pools.go:83:20: undefined array length _VD_offs or missing type constraint
internal/decoder/jitdec/assembler_test.go:75:13: undefined: _Assembler
internal/decoder/jitdec/assembler_test.go:75:13: too many errors
Begin GC looping...
--- FAIL: TestCompatUnmarshalStd (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered, repanicked]
[signal SIGSEGV: segmentation violation code=0x2 addr=0xb8 pc=0x1047f5fb0]

goroutine 50 [running]:
testing.tRunner.func1.2({0x104aded00, 0x104df72b0})
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1872 +0x190
testing.tRunner.func1()
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1875 +0x31c
panic({0x104aded00?, 0x104df72b0?})
	/Users/bytedance/.gvm/gos/go1.25.5/src/runtime/panic.go:783 +0x120
github.com/bytedance/sonic/internal/native/neon.__parse_with_padding_entry__()
	/Users/bytedance/Desktop/sonic/internal/native/neon/parse_with_padding_arm64.s:247 +0x360
github.com/bytedance/sonic/internal/native/neon.__parse_with_padding(0x140001e6000)
	/Users/bytedance/Desktop/sonic/internal/native/neon/parse_with_padding_arm64.s:15695 +0x2c
github.com/bytedance/sonic/internal/native.ParseWithPadding(0x104e7d040?)
	/Users/bytedance/Desktop/sonic/internal/native/dispatch_arm64.go:143 +0x38
github.com/bytedance/sonic/internal/decoder/optdec.(*Parser).parse(0x140001e6000)
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/native.go:192 +0x3c
github.com/bytedance/sonic/internal/decoder/optdec.NewContext({0x140002940f0?, 0x10469f5d8?}, 0x140001f2c98?, 0x30, 0x104ae7cc0)
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/node.go:125 +0x94
github.com/bytedance/sonic/internal/decoder/optdec.Decode(0x1400007a090, 0x1400007a080, 0x30, {0x104ac1980?, 0x140000c4000?})
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/decoder.go:71 +0xf8
github.com/bytedance/sonic/internal/decoder/api.(*Decoder).Decode(0x140002940f0?, {0x104ac1980?, 0x140000c4000?})
	/Users/bytedance/Desktop/sonic/internal/decoder/api/decoder.go:115 +0x4c
github.com/bytedance/sonic.frozenConfig.UnmarshalFromString({{0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, ...}, ...}, ...)
	/Users/bytedance/Desktop/sonic/sonic.go:169 +0x50
github.com/bytedance/sonic.TestCompatUnmarshalStd(0x140002028c0)
	/Users/bytedance/Desktop/sonic/compat_test.go:39 +0x114
testing.tRunner(0x140002028c0, 0x104b41018)
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1934 +0xc8
created by testing.(*T).Run in goroutine 1
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1997 +0x364
FAIL	github.com/bytedance/sonic	0.554s
Begin GC looping...
--- FAIL: TestSortNodeTwitter (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered, repanicked]
[signal SIGSEGV: segmentation violation code=0x2 addr=0x2e pc=0x1050c6d38]

goroutine 34 [running]:
testing.tRunner.func1.2({0x10543b0c0, 0x1057ff250})
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1872 +0x190
testing.tRunner.func1()
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1875 +0x31c
panic({0x10543b0c0?, 0x1057ff250?})
	/Users/bytedance/.gvm/gos/go1.25.5/src/runtime/panic.go:783 +0x120
github.com/bytedance/sonic/internal/native/neon.__get_by_path_entry__()
	/Users/bytedance/Desktop/sonic/internal/native/neon/get_by_path_arm64.s:3989 +0x3918
github.com/bytedance/sonic/internal/native/neon.__get_by_path(0x140001c7f08, 0x140001c7f00, 0x140001c7de8, 0x14000212000)
	/Users/bytedance/Desktop/sonic/internal/native/neon/get_by_path_arm64.s:6022 +0x38
github.com/bytedance/sonic/internal/native.GetByPath(0x105803740?, 0x14000202380?, 0x1400006eda8?, 0x104f04064?)
	/Users/bytedance/Desktop/sonic/internal/native/dispatch_arm64.go:117 +0x38
github.com/bytedance/sonic/ast.(*Parser).getByPath(0x140001c7f00, 0x1, {0x0, 0x0, 0x0})
	/Users/bytedance/Desktop/sonic/ast/api.go:81 +0x7c
github.com/bytedance/sonic/ast.(*Searcher).getByPath(0x140001c7f00, {0x0?, 0xf50e5942266a6e80?, 0x7dfd135eb60095ad?})
	/Users/bytedance/Desktop/sonic/ast/search.go:74 +0x40
github.com/bytedance/sonic/ast.(*Searcher).GetByPath(...)
	/Users/bytedance/Desktop/sonic/ast/search.go:66
github.com/bytedance/sonic/ast.TestSortNodeTwitter(0x14000202380)
	/Users/bytedance/Desktop/sonic/ast/api_native_test.go:38 +0x68
testing.tRunner(0x14000202380, 0x1054a8590)
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1934 +0xc8
created by testing.(*T).Run in goroutine 1
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1997 +0x364
FAIL	github.com/bytedance/sonic/ast	0.733s
Begin GC looping...
--- FAIL: TestDecoder_OptionCaseSensitive (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered, repanicked]
[signal SIGSEGV: segmentation violation code=0x2 addr=0xb8 pc=0x104d4efc0]

goroutine 34 [running]:
testing.tRunner.func1.2({0x104eddfe0, 0x105139540})
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1872 +0x190
testing.tRunner.func1()
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1875 +0x31c
panic({0x104eddfe0?, 0x105139540?})
	/Users/bytedance/.gvm/gos/go1.25.5/src/runtime/panic.go:783 +0x120
github.com/bytedance/sonic/internal/native/neon.__parse_with_padding_entry__()
	/Users/bytedance/Desktop/sonic/internal/native/neon/parse_with_padding_arm64.s:247 +0x360
github.com/bytedance/sonic/internal/native/neon.__parse_with_padding(0x140000ba000)
	/Users/bytedance/Desktop/sonic/internal/native/neon/parse_with_padding_arm64.s:15695 +0x2c
github.com/bytedance/sonic/internal/native.ParseWithPadding(0x3?)
	/Users/bytedance/Desktop/sonic/internal/native/dispatch_arm64.go:143 +0x38
github.com/bytedance/sonic/internal/decoder/optdec.(*Parser).parse(0x140000ba000)
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/native.go:192 +0x3c
github.com/bytedance/sonic/internal/decoder/optdec.NewContext({0x104e51101?, 0x104c11bf0?}, 0x140001a8de8?, 0x80, 0x104eff440)
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/node.go:125 +0x94
github.com/bytedance/sonic/internal/decoder/optdec.Decode(0x1400007a030, 0x1400007a020, 0x80, {0x104ec1860?, 0x14000018120?})
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/decoder.go:71 +0xf8
github.com/bytedance/sonic/internal/decoder/api.(*Decoder).Decode(...)
	/Users/bytedance/Desktop/sonic/internal/decoder/api/decoder.go:115
github.com/bytedance/sonic/decoder.TestDecoder_OptionCaseSensitive(0x14000202540)
	/Users/bytedance/Desktop/sonic/decoder/decoder_native_test.go:46 +0x8c
testing.tRunner(0x14000202540, 0x104f2a928)
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1934 +0xc8
created by testing.(*T).Run in goroutine 1
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1997 +0x364
FAIL	github.com/bytedance/sonic/decoder	0.980s
ok  	github.com/bytedance/sonic/encoder	(cached)
ok  	github.com/bytedance/sonic/internal/caching	(cached)
?   	github.com/bytedance/sonic/internal/cpu	[no test files]
malloc *byte  0x140000bc330
first GC
--- FAIL: TestStringReferring (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered, repanicked]
[signal SIGSEGV: segmentation violation code=0x2 addr=0xb8 pc=0x102e7aa60]

goroutine 20 [running]:
testing.tRunner.func1.2({0x103004960, 0x10325d560})
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1872 +0x190
testing.tRunner.func1()
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1875 +0x31c
panic({0x103004960?, 0x10325d560?})
	/Users/bytedance/.gvm/gos/go1.25.5/src/runtime/panic.go:783 +0x120
github.com/bytedance/sonic/internal/native/neon.__parse_with_padding_entry__()
	/Users/bytedance/Desktop/sonic/internal/native/neon/parse_with_padding_arm64.s:247 +0x360
github.com/bytedance/sonic/internal/native/neon.__parse_with_padding(0x140001b0000)
	/Users/bytedance/Desktop/sonic/internal/native/neon/parse_with_padding_arm64.s:15695 +0x2c
github.com/bytedance/sonic/internal/native.ParseWithPadding(0x1032956e0?)
	/Users/bytedance/Desktop/sonic/internal/native/dispatch_arm64.go:143 +0x38
github.com/bytedance/sonic/internal/decoder/optdec.(*Parser).parse(0x140001b0000)
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/native.go:192 +0x3c
github.com/bytedance/sonic/internal/decoder/optdec.NewContext({0x140000bc330?, 0x10328bce8?}, 0x14000068d78?, 0x10, 0x103013d20)
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/node.go:125 +0x94
github.com/bytedance/sonic/internal/decoder/optdec.Decode(0x140000b0030, 0x140000b0020, 0x10, {0x102fee7a0?, 0x140000b0000?})
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/decoder.go:71 +0xf8
github.com/bytedance/sonic/internal/decoder/api.(*Decoder).Decode(...)
	/Users/bytedance/Desktop/sonic/internal/decoder/api/decoder.go:115
github.com/bytedance/sonic/internal/decoder/api.TestStringReferring(0x1400008afc0)
	/Users/bytedance/Desktop/sonic/internal/decoder/api/norace_test.go:50 +0x16c
testing.tRunner(0x1400008afc0, 0x10304fea0)
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1934 +0xc8
created by testing.(*T).Run in goroutine 1
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1997 +0x364
FAIL	github.com/bytedance/sonic/internal/decoder/api	0.687s
?   	github.com/bytedance/sonic/internal/decoder/consts	[no test files]
ok  	github.com/bytedance/sonic/internal/decoder/errors	(cached)
FAIL	github.com/bytedance/sonic/internal/decoder/jitdec [build failed]
# github.com/bytedance/sonic/internal/native/avx2
internal/native/avx2/native_export.go:27:20: undefined: _text_f64toa
internal/native/avx2/native_export.go:28:20: undefined: _text_f32toa
internal/native/avx2/native_export.go:29:20: undefined: _text_get_by_path
internal/native/avx2/native_export.go:30:20: undefined: _text_html_escape
internal/native/avx2/native_export.go:31:20: undefined: _text_i64toa
internal/native/avx2/native_export.go:32:20: undefined: _text_lspace
internal/native/avx2/native_export.go:33:20: undefined: _text_quote
internal/native/avx2/native_export.go:34:20: undefined: _text_skip_array
internal/native/avx2/native_export.go:35:20: undefined: _text_skip_number
internal/native/avx2/native_export.go:36:20: undefined: _text_skip_one
internal/native/avx2/native_export.go:36:20: too many errors
# github.com/bytedance/sonic/internal/native/sse
internal/native/sse/native_export.go:27:20: undefined: _text_f64toa
internal/native/sse/native_export.go:28:20: undefined: _text_f32toa
internal/native/sse/native_export.go:29:20: undefined: _text_get_by_path
internal/native/sse/native_export.go:30:20: undefined: _text_html_escape
internal/native/sse/native_export.go:31:20: undefined: _text_i64toa
internal/native/sse/native_export.go:32:20: undefined: _text_lspace
internal/native/sse/native_export.go:33:20: undefined: _text_quote
internal/native/sse/native_export.go:34:20: undefined: _text_skip_array
internal/native/sse/native_export.go:35:20: undefined: _text_skip_number
internal/native/sse/native_export.go:36:20: undefined: _text_skip_one
internal/native/sse/native_export.go:36:20: too many errors
--- FAIL: TestParseNative (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered, repanicked]
[signal SIGSEGV: segmentation violation code=0x2 addr=0xb8 pc=0x1049f5950]

goroutine 7 [running]:
testing.tRunner.func1.2({0x104b58080, 0x104d7ca90})
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1872 +0x190
testing.tRunner.func1()
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1875 +0x31c
panic({0x104b58080?, 0x104d7ca90?})
	/Users/bytedance/.gvm/gos/go1.25.5/src/runtime/panic.go:783 +0x120
github.com/bytedance/sonic/internal/native/neon.__parse_with_padding_entry__()
	/Users/bytedance/Desktop/sonic/internal/native/neon/parse_with_padding_arm64.s:247 +0x360
github.com/bytedance/sonic/internal/native/neon.__parse_with_padding(0x140001a21e0)
	/Users/bytedance/Desktop/sonic/internal/native/neon/parse_with_padding_arm64.s:15695 +0x2c
github.com/bytedance/sonic/internal/native.ParseWithPadding(0xe8?)
	/Users/bytedance/Desktop/sonic/internal/native/dispatch_arm64.go:143 +0x38
github.com/bytedance/sonic/internal/decoder/optdec.(*Parser).parse(0x140001a21e0)
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/native.go:192 +0x3c
github.com/bytedance/sonic/internal/decoder/optdec.TestParseNative(0x14000166540)
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/native_test.go:14 +0x48
testing.tRunner(0x14000166540, 0x104b9c0c0)
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1934 +0xc8
created by testing.(*T).Run in goroutine 1
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1997 +0x364
FAIL	github.com/bytedance/sonic/internal/decoder/optdec	0.429s
ok  	github.com/bytedance/sonic/internal/encoder	(cached)
ok  	github.com/bytedance/sonic/internal/encoder/alg	(cached)
Execute Test: "_OP_null"
Execute Test: "_OP_i16"
Execute Test: "_OP_i32"
Execute Test: "_OP_i64"
Execute Test: "_OP_u8"
Execute Test: "_OP_u16"
Execute Test: "_OP_u32"
Execute Test: "_OP_str"
Execute Test: "_OP_str/empty"
Execute Test: "_OP_quote"
Execute Test: "_OP_quote/escape"
Execute Test: "_OP_number"
Execute Test: "_OP_number/invalid"
Execute Test: "_OP_f64"
Execute Test: "_OP_f64/nan"
Execute Test: "_OP_f64/+inf"
Execute Test: "_OP_f64/-inf"
Execute Test: "_OP_f32"
Execute Test: "_OP_f32/nan"
Execute Test: "_OP_f32/+inf"
Execute Test: "_OP_f32/-inf"
Execute Test: "_OP_empty_obj"
Execute Test: "_OP_i8"
Execute Test: "_OP_u64"
Execute Test: "_OP_str"
Execute Test: "_OP_byte"
Execute Test: "_OP_quote"
Execute Test: "_OP_bool/true"
Execute Test: "_OP_bool/false"
Execute Test: "_OP_eface"
Execute Test: "_OP_iface"
Execute Test: "_OP_map_[iter,next,value]"
Execute Test: "_OP_marshal[_text]"
Execute Test: "_OP_marshal[_text]/ptr"
Execute Test: "_OP_marshal[_text]/iface_v"
Execute Test: "_OP_marshal[_text]/iface_p"
Execute Test: "_OP_slice_[len,next]"
Execute Test: "_OP_bin"
Execute Test: "_OP_bin/empty"
Execute Test: "_OP_recurse"
--- FAIL: TestAssembler_i8 (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered, repanicked]
[signal SIGSEGV: segmentation violation code=0x2 addr=0xb8 pc=0x1007d5680]

goroutine 71 [running]:
testing.tRunner.func1.2({0x1009a88e0, 0x100c82680})
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1872 +0x190
testing.tRunner.func1()
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1875 +0x31c
panic({0x1009a88e0?, 0x100c82680?})
	/Users/bytedance/.gvm/gos/go1.25.5/src/runtime/panic.go:783 +0x120
github.com/bytedance/sonic/internal/native/neon.__parse_with_padding_entry__()
	/Users/bytedance/Desktop/sonic/internal/native/neon/parse_with_padding_arm64.s:247 +0x360
github.com/bytedance/sonic/internal/native/neon.__parse_with_padding(0x1400050a1e0)
	/Users/bytedance/Desktop/sonic/internal/native/neon/parse_with_padding_arm64.s:15695 +0x2c
github.com/bytedance/sonic/internal/native.ParseWithPadding(0x140004afb58?)
	/Users/bytedance/Desktop/sonic/internal/native/dispatch_arm64.go:143 +0x38
github.com/bytedance/sonic/internal/decoder/optdec.(*Parser).parse(0x1400050a1e0)
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/native.go:192 +0x3c
github.com/bytedance/sonic/internal/decoder/optdec.NewContext({0x14000112a30?, 0x100d80108?}, 0x14000090808?, 0x0, 0x1009b34e0)
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/node.go:125 +0x94
github.com/bytedance/sonic/internal/decoder/optdec.Decode(0x1400011e590, 0x1400011e580, 0x0, {0x100988d80?, 0x14000112988?})
	/Users/bytedance/Desktop/sonic/internal/decoder/optdec/decoder.go:71 +0xf8
github.com/bytedance/sonic/internal/decoder/api.(*Decoder).Decode(0x14000112a30?, {0x100988d80?, 0x14000112988?})
	/Users/bytedance/Desktop/sonic/internal/decoder/api/decoder.go:115 +0x4c
github.com/bytedance/sonic.frozenConfig.UnmarshalFromString({{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...}, ...}, ...)
	/Users/bytedance/Desktop/sonic/sonic.go:169 +0x50
github.com/bytedance/sonic.frozenConfig.Unmarshal(...)
	/Users/bytedance/Desktop/sonic/sonic.go:181
github.com/bytedance/sonic.Unmarshal(...)
	/Users/bytedance/Desktop/sonic/api.go:196
github.com/bytedance/sonic/internal/encoder/arm64_test.TestAssembler_i8(0x14000003c00)
	/Users/bytedance/Desktop/sonic/internal/encoder/arm64/assembler_arm64_test.go:373 +0xa0
testing.tRunner(0x14000003c00, 0x1009fecf0)
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1934 +0xc8
created by testing.(*T).Run in goroutine 1
	/Users/bytedance/.gvm/gos/go1.25.5/src/testing/testing.go:1997 +0x364
FAIL	github.com/bytedance/sonic/internal/encoder/arm64	0.518s
?   	github.com/bytedance/sonic/internal/encoder/ir	[no test files]
?   	github.com/bytedance/sonic/internal/encoder/prim	[no test files]
?   	github.com/bytedance/sonic/internal/encoder/vars	[no test files]
ok  	github.com/bytedance/sonic/internal/encoder/vm	(cached)
?   	github.com/bytedance/sonic/internal/envs	[no test files]
ok  	github.com/bytedance/sonic/internal/jit	(cached)
ok  	github.com/bytedance/sonic/internal/native	(cached) [no tests to run]
FAIL	github.com/bytedance/sonic/internal/native/avx2 [build failed]
ok  	github.com/bytedance/sonic/internal/native/neon	(cached)
FAIL	github.com/bytedance/sonic/internal/native/sse [build failed]
ok  	github.com/bytedance/sonic/internal/native/sve_linkname	0.405s
ok  	github.com/bytedance/sonic/internal/native/sve_wrapgoc	0.421s
?   	github.com/bytedance/sonic/internal/native/types	[no test files]
?   	github.com/bytedance/sonic/internal/optcaching	[no test files]
ok  	github.com/bytedance/sonic/internal/resolver	(cached)
ok  	github.com/bytedance/sonic/internal/rt	(cached)
?   	github.com/bytedance/sonic/internal/utils	[no test files]
?   	github.com/bytedance/sonic/option	[no test files]
?   	github.com/bytedance/sonic/tools/asm2arm_tool/output/neon	[no test files]
?   	github.com/bytedance/sonic/tools/asm2arm_tool/output/sve_linkname	[no test files]
?   	github.com/bytedance/sonic/tools/asm2arm_tool/output/sve_wrapgoc	[no test files]
?   	github.com/bytedance/sonic/unquote	[no test files]
--- FAIL: TestValidate_Random (0.02s)
    utf8_test.go:63: 
        	Error Trace:	/Users/bytedance/Desktop/sonic/utf8/utf8_test.go:63
        	            				/Users/bytedance/Desktop/sonic/utf8/utf8_test.go:75
        	Error:      	Not equal: 
        	            	expected: true
        	            	actual  : false
        	Test:       	TestValidate_Random
        	Messages:   	񇕒򗋍𨱆𵄰𑄌񜙡򁢀󎴮񅹒𚄋𘳬򝕟󂐱򙻪򊭴𸡊򥬳򰝚󌏩𙑵𿘗񚄶񣘄󥡳󤲠򱹐􀷶񫅛򑣎𵩉򋙬򰑕򔁉􎂽񗗟񡎪򳔍񳤝𨵡򸶇񩨷񯳋탃
FAIL	github.com/bytedance/sonic/utf8	0.843s
FAIL

@yupan14 yupan14 changed the title add new asm2arm_tool to support the generation of Go files from native C code to neon, sve_linkname and sve_wrapgoc modes. add new asm2arm_tool to support the generation of Go files from native C code to sve_linkname and sve_wrapgoc modes. Mar 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants