Ticket #1603 (closed bug: fixed)

Opened 4 years ago

Last modified 4 years ago

ACTIVE_BUFFERS “leak”

Reported by: coke Owned by:
Priority: normal Milestone:
Component: GC Version: trunk
Severity: medium Keywords:
Cc: Language:
Patch status: Platform:

Description (last modified by coke) (diff)

See the attached file - against trunk, it creates 1000 codestrings in a loop and throws them away. Here's the output:

@ START
    TOTAL_MEM_ALLOC............: 262144
    ACTIVE_PMCS................: 914
    ACTIVE_BUFFERS.............: 218
    TOTAL_PMCS.................: 1024
    TOTAL_BUFFERS..............: 1137
    HEADER_ALLOCS_SINCE_COLLECT: 0
    MEM_ALLOCS_SINCE_COLLECT...: 0
    TOTAL_COPIED...............: 5136
    IMPATIENT_PMCS.............: 0
@ POST LOOP
    TOTAL_MEM_ALLOC............: 262144
    ACTIVE_PMCS................: 917
    ACTIVE_BUFFERS.............: 4151
    TOTAL_PMCS.................: 7168
    TOTAL_BUFFERS..............: 4548
    HEADER_ALLOCS_SINCE_COLLECT: 0
    MEM_ALLOCS_SINCE_COLLECT...: 0
    TOTAL_COPIED...............: 40112
    IMPATIENT_PMCS.............: 0
@ END
    TOTAL_MEM_ALLOC............: 262144
    ACTIVE_PMCS................: 917
    ACTIVE_BUFFERS.............: 152
    TOTAL_PMCS.................: 7168
    TOTAL_BUFFERS..............: 4548
    HEADER_ALLOCS_SINCE_COLLECT: 0
    MEM_ALLOCS_SINCE_COLLECT...: 0
    TOTAL_COPIED...............: 43104
    IMPATIENT_PMCS.............: 0

Note the ACTIVE_BUFFER output ; Looks like something is hanging onto these headers a bit too long, but running another sweep makes them go away?

Attachments

err.pir Download (1.7 KB) - added by coke 4 years ago.

Change History

Changed 4 years ago by coke

Changed 4 years ago by coke

  • description modified (diff)

Changed 4 years ago by NotFound

I've made several attempts to fix this problem. There are pointers to the codestring in the context, but even if I manage to avoid the codestring being marked, the buffers are not disposed until the second sweep.

I'm also unable to find an appropriate way to clean the context, all my attempts break some test. But the second sweep cleans all, so the context is cleaned elsewhere.

Changed 4 years ago by nwellnhof

  • status changed from new to closed
  • resolution set to fixed

Fix in r48622, test case in r48623.

Note: See TracTickets for help on using tickets.