Bug 1360612
| Summary: | Memory leak on incomplete JSON parse | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Markus Armbruster <armbru> |
| Component: | qemu-kvm-rhev | Assignee: | Markus Armbruster <armbru> |
| Status: | CLOSED ERRATA | QA Contact: | Chao Yang <chayang> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 7.3 | CC: | chayang, juzhang, mrezanin, virt-maint |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | qemu-kvm-rhev-2.6.0-17.el7 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2016-11-07 21:26:44 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
Fix included in qemu-kvm-rhev-2.6.0-17.el7 Reproduced with qemu-kvm-rhev-2.6.0-16.el7. Actual Result: # valgrind --leak-check=full tests/check-qjson ==15681== Memcheck, a memory error detector ==15681== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==15681== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info ==15681== Command: tests/check-qjson ==15681== /literals/keyword: OK /literals/string/simple: OK /literals/string/escaped: OK /literals/string/utf8: OK /literals/string/single_quote: OK /literals/string/vararg: OK /literals/number/simple: OK /literals/number/float: OK /literals/number/vararg: OK /dicts/simple_dict: OK /dicts/large_dict: OK /lists/simple_list: OK /whitespace/simple_whitespace: OK /varargs/simple_varargs: OK /errors/empty_input: OK /errors/invalid_array_comma: OK /errors/invalid_dict_comma: OK /errors/unterminated/string: OK /errors/unterminated/escape: OK /errors/unterminated/sq_string: OK /errors/unterminated/array: OK /errors/unterminated/array_comma: OK /errors/unterminated/dict: OK /errors/unterminated/dict_comma: OK /errors/unterminated/literal: OK /errors/limits/nesting: OK ==15681== ==15681== HEAP SUMMARY: ==15681== in use at exit: 26,140 bytes in 125 blocks ==15681== total heap usage: 547,978 allocs, 547,853 frees, 22,446,647 bytes allocated ==15681== ==15681== LEAK SUMMARY: ==15681== definitely lost: 0 bytes in 0 blocks ==15681== indirectly lost: 0 bytes in 0 blocks ==15681== possibly lost: 0 bytes in 0 blocks ==15681== still reachable: 26,140 bytes in 125 blocks ==15681== suppressed: 0 bytes in 0 blocks ==15681== Reachable blocks (those to which a pointer was found) are not shown. ==15681== To see them, rerun with: --leak-check=full --show-leak-kinds=all ==15681== ==15681== For counts of detected and suppressed errors, rerun with: -v ==15681== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) [root@localhost qemu-kvm]# git describe --tags qemu-kvm-rhev-2.6.0-22.el7 [root@localhost qemu-kvm]# cat /home/chayang/log ==8231== HEAP SUMMARY: ==8231== in use at exit: 43,387 bytes in 1,359 blocks ==8231== total heap usage: 547,978 allocs, 546,619 frees, 22,446,647 bytes allocated ==8231== ==8231== 14 bytes in 1 blocks are definitely lost in loss record 35 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113E3A: json_lexer_feed_char (json-lexer.c:310) ==8231== by 0x113EFD: json_lexer_feed (json-lexer.c:360) ==8231== by 0x1108AD: qobject_from_jsonv (qjson.c:46) ==8231== by 0x10B77F: unterminated_array (check-qjson.c:1448) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== ==8231== 15 bytes in 1 blocks are definitely lost in loss record 39 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113E3A: json_lexer_feed_char (json-lexer.c:310) ==8231== by 0x1108B5: qobject_from_jsonv (qjson.c:47) ==8231== by 0x10B77F: unterminated_array (check-qjson.c:1448) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x10B46F: main (check-qjson.c:1549) ==8231== ==8231== 15 bytes in 1 blocks are definitely lost in loss record 40 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113E3A: json_lexer_feed_char (json-lexer.c:310) ==8231== by 0x1108B5: qobject_from_jsonv (qjson.c:47) ==8231== by 0x10B6DF: unterminated_dict (check-qjson.c:1466) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x10B46F: main (check-qjson.c:1549) ==8231== ==8231== 17 bytes in 1 blocks are definitely lost in loss record 76 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113D88: json_lexer_feed_char (json-lexer.c:345) ==8231== by 0x1108B5: qobject_from_jsonv (qjson.c:47) ==8231== by 0x10B86F: unterminated_string (check-qjson.c:1430) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x10B46F: main (check-qjson.c:1549) ==8231== ==8231== 17 bytes in 1 blocks are definitely lost in loss record 77 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113D88: json_lexer_feed_char (json-lexer.c:345) ==8231== by 0x1108B5: qobject_from_jsonv (qjson.c:47) ==8231== by 0x10B7CF: unterminated_sq_string (check-qjson.c:1436) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x10B46F: main (check-qjson.c:1549) ==8231== ==8231== 19 bytes in 1 blocks are definitely lost in loss record 81 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113D88: json_lexer_feed_char (json-lexer.c:345) ==8231== by 0x1108B5: qobject_from_jsonv (qjson.c:47) ==8231== by 0x10B81F: unterminated_escape (check-qjson.c:1442) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x10B46F: main (check-qjson.c:1549) ==8231== ==8231== 43 bytes in 3 blocks are definitely lost in loss record 96 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113E3A: json_lexer_feed_char (json-lexer.c:310) ==8231== by 0x113EFD: json_lexer_feed (json-lexer.c:360) ==8231== by 0x1108AD: qobject_from_jsonv (qjson.c:46) ==8231== by 0x10B72F: unterminated_array_comma (check-qjson.c:1454) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== ==8231== 46 bytes in 3 blocks are definitely lost in loss record 97 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113E3A: json_lexer_feed_char (json-lexer.c:310) ==8231== by 0x113EFD: json_lexer_feed (json-lexer.c:360) ==8231== by 0x1108AD: qobject_from_jsonv (qjson.c:46) ==8231== by 0x10B6DF: unterminated_dict (check-qjson.c:1466) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== ==8231== 75 bytes in 5 blocks are definitely lost in loss record 126 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113E3A: json_lexer_feed_char (json-lexer.c:310) ==8231== by 0x113EFD: json_lexer_feed (json-lexer.c:360) ==8231== by 0x1108AD: qobject_from_jsonv (qjson.c:46) ==8231== by 0x10B68F: unterminated_dict_comma (check-qjson.c:1472) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== ==8231== 392 bytes in 28 blocks are definitely lost in loss record 128 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113D88: json_lexer_feed_char (json-lexer.c:345) ==8231== by 0x1108B5: qobject_from_jsonv (qjson.c:47) ==8231== by 0x10CE9D: utf8_string (check-qjson.c:828) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x10B46F: main (check-qjson.c:1549) ==8231== ==8231== 2,244 bytes in 164 blocks are definitely lost in loss record 130 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113D88: json_lexer_feed_char (json-lexer.c:345) ==8231== by 0x113EFD: json_lexer_feed (json-lexer.c:360) ==8231== by 0x1108AD: qobject_from_jsonv (qjson.c:46) ==8231== by 0x10CE9D: utf8_string (check-qjson.c:828) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== ==8231== 14,350 bytes in 1,025 blocks are definitely lost in loss record 133 of 134 ==8231== at 0x4C27BE3: malloc (vg_replace_malloc.c:299) ==8231== by 0x538630D: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x110AF1: json_message_process_token (json-streamer.c:54) ==8231== by 0x113E3A: json_lexer_feed_char (json-lexer.c:310) ==8231== by 0x113EFD: json_lexer_feed (json-lexer.c:360) ==8231== by 0x1108AD: qobject_from_jsonv (qjson.c:46) ==8231== by 0x10BFE5: limits_nesting (check-qjson.c:1508) ==8231== by 0x53A4D19: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A4EE2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A50ED: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== by 0x53A5110: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==8231== ==8231== LEAK SUMMARY: ==8231== definitely lost: 17,247 bytes in 1,234 blocks ==8231== indirectly lost: 0 bytes in 0 blocks ==8231== possibly lost: 0 bytes in 0 blocks ==8231== still reachable: 26,140 bytes in 125 blocks ==8231== suppressed: 0 bytes in 0 blocks ==8231== Reachable blocks (those to which a pointer was found) are not shown. ==8231== To see them, rerun with: --leak-check=full --show-leak-kinds=all ==8231== ==8231== For counts of detected and suppressed errors, rerun with: -v ==8231== ERROR SUMMARY: 12 errors from 12 contexts (suppressed: 0 from 0) -- Verified pass with qemu-kvm-rhev-2.6.0-22.el7 # valgrind --leak-check=full tests/check-qjson ==15681== Memcheck, a memory error detector ==15681== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==15681== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info ==15681== Command: tests/check-qjson ==15681== /literals/keyword: OK /literals/string/simple: OK /literals/string/escaped: OK /literals/string/utf8: OK /literals/string/single_quote: OK /literals/string/vararg: OK /literals/number/simple: OK /literals/number/float: OK /literals/number/vararg: OK /dicts/simple_dict: OK /dicts/large_dict: OK /lists/simple_list: OK /whitespace/simple_whitespace: OK /varargs/simple_varargs: OK /errors/empty_input: OK /errors/invalid_array_comma: OK /errors/invalid_dict_comma: OK /errors/unterminated/string: OK /errors/unterminated/escape: OK /errors/unterminated/sq_string: OK /errors/unterminated/array: OK /errors/unterminated/array_comma: OK /errors/unterminated/dict: OK /errors/unterminated/dict_comma: OK /errors/unterminated/literal: OK /errors/limits/nesting: OK ==15681== ==15681== HEAP SUMMARY: ==15681== in use at exit: 26,140 bytes in 125 blocks ==15681== total heap usage: 547,978 allocs, 547,853 frees, 22,446,647 bytes allocated ==15681== ==15681== LEAK SUMMARY: ==15681== definitely lost: 0 bytes in 0 blocks ==15681== indirectly lost: 0 bytes in 0 blocks ==15681== possibly lost: 0 bytes in 0 blocks ==15681== still reachable: 26,140 bytes in 125 blocks ==15681== suppressed: 0 bytes in 0 blocks ==15681== Reachable blocks (those to which a pointer was found) are not shown. ==15681== To see them, rerun with: --leak-check=full --show-leak-kinds=all ==15681== ==15681== For counts of detected and suppressed errors, rerun with: -v ==15681== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-2673.html |
Description of problem: Upstream commit 95385fe "qjson: store tokens in a GQueue" introduced a memory leak. We need the followup fixes to plug it: a942d8fa json-streamer: fix double-free on exiting during a parse ba4dba54 json-streamer: Don't leak tokens on incomplete parse Version-Release number of selected component (if applicable): qemu-kvm-rhev-2.6.0-16.el7 How reproducible: Always Steps to Reproduce: 1. Build tests/check-qjson. The easiest way is "make && make check". 2. valgrind --leak-check=full tests/check-qjson Actual results: valgrind reports memory leaks. See "additional info" for details. Expected results: No memory leaks reported. Additional info: ==9520== ==9520== HEAP SUMMARY: ==9520== in use at exit: 116,145 bytes in 1,362 blocks ==9520== total heap usage: 549,285 allocs, 547,923 frees, 22,629,087 bytes allocated ==9520== ==9520== 14 bytes in 1 blocks are definitely lost in loss record 36 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D8C: json_lexer_feed_char (json-lexer.c:310) ==9520== by 0x113E9D: json_lexer_feed (json-lexer.c:360) ==9520== by 0x11088D: qobject_from_jsonv (qjson.c:46) ==9520== by 0x10B8BF: unterminated_array (check-qjson.c:1448) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== ==9520== 15 bytes in 1 blocks are definitely lost in loss record 40 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D8C: json_lexer_feed_char (json-lexer.c:310) ==9520== by 0x110895: qobject_from_jsonv (qjson.c:47) ==9520== by 0x10B8BF: unterminated_array (check-qjson.c:1448) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x10B58F: main (check-qjson.c:1549) ==9520== ==9520== 15 bytes in 1 blocks are definitely lost in loss record 41 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D8C: json_lexer_feed_char (json-lexer.c:310) ==9520== by 0x110895: qobject_from_jsonv (qjson.c:47) ==9520== by 0x10B81F: unterminated_dict (check-qjson.c:1466) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x10B58F: main (check-qjson.c:1549) ==9520== ==9520== 17 bytes in 1 blocks are definitely lost in loss record 77 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D1C: json_lexer_feed_char (json-lexer.c:345) ==9520== by 0x110895: qobject_from_jsonv (qjson.c:47) ==9520== by 0x10B9AF: unterminated_string (check-qjson.c:1430) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x10B58F: main (check-qjson.c:1549) ==9520== ==9520== 17 bytes in 1 blocks are definitely lost in loss record 78 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D1C: json_lexer_feed_char (json-lexer.c:345) ==9520== by 0x110895: qobject_from_jsonv (qjson.c:47) ==9520== by 0x10B90F: unterminated_sq_string (check-qjson.c:1436) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x10B58F: main (check-qjson.c:1549) ==9520== ==9520== 19 bytes in 1 blocks are definitely lost in loss record 82 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D1C: json_lexer_feed_char (json-lexer.c:345) ==9520== by 0x110895: qobject_from_jsonv (qjson.c:47) ==9520== by 0x10B95F: unterminated_escape (check-qjson.c:1442) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x10B58F: main (check-qjson.c:1549) ==9520== ==9520== 43 bytes in 3 blocks are definitely lost in loss record 98 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D8C: json_lexer_feed_char (json-lexer.c:310) ==9520== by 0x113E9D: json_lexer_feed (json-lexer.c:360) ==9520== by 0x11088D: qobject_from_jsonv (qjson.c:46) ==9520== by 0x10B86F: unterminated_array_comma (check-qjson.c:1454) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== ==9520== 46 bytes in 3 blocks are definitely lost in loss record 99 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D8C: json_lexer_feed_char (json-lexer.c:310) ==9520== by 0x113E9D: json_lexer_feed (json-lexer.c:360) ==9520== by 0x11088D: qobject_from_jsonv (qjson.c:46) ==9520== by 0x10B81F: unterminated_dict (check-qjson.c:1466) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== ==9520== 75 bytes in 5 blocks are definitely lost in loss record 128 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D8C: json_lexer_feed_char (json-lexer.c:310) ==9520== by 0x113E9D: json_lexer_feed (json-lexer.c:360) ==9520== by 0x11088D: qobject_from_jsonv (qjson.c:46) ==9520== by 0x10B7CF: unterminated_dict_comma (check-qjson.c:1472) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== ==9520== 392 bytes in 28 blocks are definitely lost in loss record 130 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D1C: json_lexer_feed_char (json-lexer.c:345) ==9520== by 0x110895: qobject_from_jsonv (qjson.c:47) ==9520== by 0x10C298: utf8_string (check-qjson.c:828) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x10B58F: main (check-qjson.c:1549) ==9520== ==9520== 2,244 bytes in 164 blocks are definitely lost in loss record 132 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D1C: json_lexer_feed_char (json-lexer.c:345) ==9520== by 0x113E9D: json_lexer_feed (json-lexer.c:360) ==9520== by 0x11088D: qobject_from_jsonv (qjson.c:46) ==9520== by 0x10C298: utf8_string (check-qjson.c:828) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== ==9520== 14,350 bytes in 1,025 blocks are definitely lost in loss record 135 of 137 ==9520== at 0x4C28BF6: malloc (vg_replace_malloc.c:299) ==9520== by 0x52FB528: g_malloc (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x110AD1: json_message_process_token (json-streamer.c:54) ==9520== by 0x113D8C: json_lexer_feed_char (json-lexer.c:310) ==9520== by 0x113E9D: json_lexer_feed (json-lexer.c:360) ==9520== by 0x11088D: qobject_from_jsonv (qjson.c:46) ==9520== by 0x10C1D3: limits_nesting (check-qjson.c:1508) ==9520== by 0x531B50A: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B6D2: ??? (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B8DD: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== by 0x531B900: g_test_run (in /usr/lib64/libglib-2.0.so.0.4600.2) ==9520== ==9520== LEAK SUMMARY: ==9520== definitely lost: 17,247 bytes in 1,234 blocks ==9520== indirectly lost: 0 bytes in 0 blocks ==9520== possibly lost: 0 bytes in 0 blocks ==9520== still reachable: 98,898 bytes in 128 blocks ==9520== suppressed: 0 bytes in 0 blocks ==9520== Reachable blocks (those to which a pointer was found) are not shown. ==9520== To see them, rerun with: --leak-check=full --show-leak-kinds=all ==9520== ==9520== For counts of detected and suppressed errors, rerun with: -v ==9520== ERROR SUMMARY: 12 errors from 12 contexts (suppressed: 0 from 0)