Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

xt/release/memory.t reporting lost objects in findnodes test #85

Open
dwarring opened this issue Aug 15, 2022 · 2 comments
Open

xt/release/memory.t reporting lost objects in findnodes test #85

dwarring opened this issue Aug 15, 2022 · 2 comments

Comments

@dwarring
Copy link
Contributor

This test is reporting 3.74% object lost. The majority of these are being lost in the findnodes test, as below.

Tests run on LibXML 0.8.1, however 0.7.9 is also repoting similar results.

Test output:

david@box:~/git/LibXML-raku$ prove6 -I. -v xt/release/memory.t 
 
# running tests 5000 times
1..17
Mem Total: 613680 kB, Resident: 396004 kB, Objects: 0
ok 1 - Start.
# Subtest: make doc in sub
Change! : 68 kB
Mem Total: 613748 kB, Resident: 396508 kB, Objects: 3
Change! : 40 kB
Mem Total: 613788 kB, Resident: 396552 kB, Objects: 6
Change! : 20 kB
Mem Total: 613808 kB, Resident: 396552 kB, Objects: 8
    ok 1 - Str()
    1..1
ok 2 - make doc in sub
# Subtest: make doc in sub II
Mem Total: 613808 kB, Resident: 396552 kB, Objects: 12
    ok 1 - Str()
    1..1
ok 3 - make doc in sub II
Mem Total: 613808 kB, Resident: 396568 kB, Objects: 12
# Subtest: appendChild
    ok 1 - 
    1..1
ok 4 - appendChild
# Subtest: set document element
    ok 1 - documentElement
    1..1
ok 5 - set document element
# Subtest: multiple parsers
Change! : 316 kB
Mem Total: 614124 kB, Resident: 396868 kB, Objects: 3
Change! : 2784 kB
Mem Total: 616908 kB, Resident: 402316 kB, Objects: 49
    ok 1 - Initialise multiple parsers.
    ok 2 - multiple parses
    1..2
ok 6 - multiple parsers
# Subtest: multiple failing parses
Change! : 3356 kB
Mem Total: 620264 kB, Resident: 402316 kB, Objects: 169
    ok 1 - Multiple failures.
    1..1
ok 7 - multiple failing parses
# Subtest: building custom docs
Change! : 228 kB
Mem Total: 620492 kB, Resident: 402316 kB, Objects: 188
Change! : 260 kB
Mem Total: 620752 kB, Resident: 402316 kB, Objects: 218
    ok 1 - customDocs
    ok 2 - customDocs No. 2
    1..2
ok 8 - building custom docs
# Subtest: DTD string parsing
Change! : 5084 kB
Mem Total: 625836 kB, Resident: 402316 kB, Objects: 169
    ok 1 - 
    ok 2 - after dtdstr
    1..2
ok 9 - DTD string parsing
# Subtest: DTD URI parsing
Change! : 1512 kB
Mem Total: 627348 kB, Resident: 402316 kB, Objects: 187
    ok 1 - after URI parsing.
    1..1
ok 10 - DTD URI parsing
# Subtest: document validation
Change! : 288 kB
Mem Total: 627636 kB, Resident: 402316 kB, Objects: 138
    # validate()
Change! : 560 kB
Mem Total: 628196 kB, Resident: 402316 kB, Objects: 138
    ok 1 - is-valid()
    ok 2 - validate()
    1..2
ok 11 - document validation
# Subtest: findnodes
Change! : 219820 kB
Mem Total: 848016 kB, Resident: 580680 kB, Objects: 10154
    ok 1 - after processMessage
    1..1
ok 12 - findnodes
# Subtest: find
Change! : 94856 kB
Mem Total: 942872 kB, Resident: 664876 kB, Objects: 10141
    ok 1 - .find.
    1..1
ok 13 - find
# Subtest: namespace tests
Change! : 240 kB
Mem Total: 943112 kB, Resident: 664992 kB, Objects: 10143
    ok 1 - namespace tests.
    1..1
ok 14 - namespace tests
# Subtest: SAX parser
Mem Total: 943112 kB, Resident: 664992 kB, Objects: 10143
    # NAMESPACES ATTRIBUTE
Change! : 2112 kB
Mem Total: 945224 kB, Resident: 665532 kB, Objects: 10172
    # NAMESPACES SIMPLE
Change! : 1024 kB
Mem Total: 946248 kB, Resident: 665532 kB, Objects: 10151
    # SIMPLE
Change! : 2048 kB
Mem Total: 948296 kB, Resident: 665532 kB, Objects: 10178
    # SIMPLE ATTRIBUTE
Change! : 1072 kB
Mem Total: 949368 kB, Resident: 665532 kB, Objects: 10156
    # SIMPLE CDATA
Change! : 2048 kB
Mem Total: 951416 kB, Resident: 665532 kB, Objects: 10182
    # SIMPLE COMMENT
Change! : 1024 kB
Mem Total: 952440 kB, Resident: 665532 kB, Objects: 10160
    # SIMPLE TEXT
Change! : 2048 kB
Mem Total: 954488 kB, Resident: 665532 kB, Objects: 10187
    ok 1 - SAX PARSER
    1..1
ok 15 - SAX parser
Mem Total: 954488 kB, Resident: 666960 kB, Objects: 10187
# Subtest: push parser
    # NAMESPACES ATTRIBUTE
Change! : 1424 kB
Mem Total: 955912 kB, Resident: 677860 kB, Objects: 10195
    # NAMESPACES SIMPLE
Change! : 2048 kB
Mem Total: 957960 kB, Resident: 680480 kB, Objects: 10211
    # SIMPLE
Change! : 1024 kB
Mem Total: 958984 kB, Resident: 684412 kB, Objects: 10261
    # SIMPLE ATTRIBUTE
Change! : 2048 kB
Mem Total: 961032 kB, Resident: 688572 kB, Objects: 10282
    # SIMPLE CDATA
Change! : 1024 kB
Mem Total: 962056 kB, Resident: 691740 kB, Objects: 10332
    # SIMPLE COMMENT
Change! : 2048 kB
Mem Total: 964104 kB, Resident: 696440 kB, Objects: 10361
    # SIMPLE TEXT
Change! : 1024 kB
Mem Total: 965128 kB, Resident: 700468 kB, Objects: 10407
    # SIMPLE
Change! : 52 kB
Mem Total: 965180 kB, Resident: 701112 kB, Objects: 10385
    # SIMPLE2
Mem Total: 965180 kB, Resident: 702304 kB, Objects: 10385
    # SIMPLE TEXT
Mem Total: 965180 kB, Resident: 704136 kB, Objects: 10385
    # SIMPLE CDATA
Mem Total: 965180 kB, Resident: 705668 kB, Objects: 10385
    # SIMPLE JUNK
Mem Total: 965180 kB, Resident: 706812 kB, Objects: 10385
Mem Total: 965180 kB, Resident: 709032 kB, Objects: 10385
    ok 1 - good pushed data
    ok 2 - bad pushed data
    1..2
ok 16 - push parser
    # NAMESPACES ATTRIBUTE
# Subtest: SAX push parser
Change! : 2128 kB
Mem Total: 967308 kB, Resident: 710808 kB, Objects: 10455
    # NAMESPACES SIMPLE
Change! : 1024 kB
Mem Total: 968332 kB, Resident: 714668 kB, Objects: 10490
    # SIMPLE
Change! : 2048 kB
Mem Total: 970380 kB, Resident: 718416 kB, Objects: 10528
    # SIMPLE ATTRIBUTE
Change! : 1024 kB
Mem Total: 971404 kB, Resident: 722340 kB, Objects: 10566
    # SIMPLE CDATA
Change! : 2048 kB
Mem Total: 973452 kB, Resident: 726136 kB, Objects: 10593
    # SIMPLE COMMENT
Change! : 1024 kB
Mem Total: 974476 kB, Resident: 730192 kB, Objects: 10646
    # SIMPLE TEXT
Change! : 2048 kB
Mem Total: 976524 kB, Resident: 734220 kB, Objects: 10659
        # SIMPLE 
Change! : 32 kB
Mem Total: 976556 kB, Resident: 735740 kB, Objects: 10658
        # SIMPLE CDATA
Change! : 65536 kB
Mem Total: 1042092 kB, Resident: 736908 kB, Objects: 10658
        # SIMPLE JUNK
Mem Total: 1042092 kB, Resident: 737880 kB, Objects: 10658
        # SIMPLE TEXT
Mem Total: 1042092 kB, Resident: 740144 kB, Objects: 10658
        # SIMPLE2
Mem Total: 1042092 kB, Resident: 741196 kB, Objects: 10658
Total Mem Increase:428284 kB, Avg-Objects:7400, Lost:10658 Objects (3.74%)
    ok 1 - SAX PUSH PARSER
    # Subtest: bad pushed data
        ok 1 - BAD PUSHED DATA
        1..1
    ok 2 - bad pushed data
    1..2
ok 17 - SAX push parser
xt/release/memory.t .. ok
All tests successful.
@dwarring
Copy link
Contributor Author

Leak bisected to 92e3792

Was leaking just slighty before this change, but went up 100 fold afterwards.

@dwarring
Copy link
Contributor Author

dwarring commented Sep 2, 2022

This leaks:

my LibXML $parser .= new();
for 1..TIMES-THROUGH {
    my $doc = $parser.parse: :string($xml);
    my $node = $doc.first('/dromedaries/species');
}

This doesn't:

my LibXML $parser .= new();
my $doc = $parser.parse: :string($xml);
for 1..TIMES-THROUGH {
    my $node = $doc.first('/dromedaries/species');
}

Also both first and findnodes leak.

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

No branches or pull requests

1 participant