Skip Menu |

This queue is for tickets about the YAML-Syck CPAN distribution.

Report information
The Basics
Id: 41199
Status: resolved
Priority: 0/
Queue: YAML-Syck

People
Owner: Nobody in particular
Requestors: ANDK [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in: 1.05
Fixed in: (no value)



Subject: Dumping a filehandle leaks memory
This program leaks memory at a high rate: perl -le 'use YAML::Syck; while (){ open my $fh, "/etc/hosts" or die; YAML::Syck::Dump($fh)}' > /dev/null Let me know if you need further details. Thanks!
On Mon Nov 24 22:21:22 2008, ANDK wrote: Show quoted text
> This program leaks memory at a high rate: > > perl -le 'use YAML::Syck; while (){ open my $fh, "/etc/hosts" or die; > YAML::Syck::Dump($fh)}' > /dev/null > > Let me know if you need further details. > > Thanks!
Devel::Leak shows that it's leaking one SV per iteration. The SV dump looks like this: new 0x823d6f0 : SV = PVIV(0x823f0c0) at 0x823d6f0 REFCNT = 1 FLAGS = (POK,FAKE,READONLY,pPOK) IV = 1529493059 PV = 0x8239a78 "=" CUR = 1 LEN = 0 Checking the process memory also suggests that it's only this SV, per iteration it's leaking about 24 to 28 bytes, depending on perl/OS. Regards, Slaven
On Mon Nov 24 22:21:22 2008, ANDK wrote: Show quoted text
> This program leaks memory at a high rate: > > perl -le 'use YAML::Syck; while (){ open my $fh, "/etc/hosts" or die; > YAML::Syck::Dump($fh)}' > /dev/null > > Let me know if you need further details.
A failing test would be nice, you could e.g. run it on linux only and check ps -o rss $$, then see if it's e.g. 2x what it used to be after a few thousand iterations. See also this boring form letter I'm pasting around: (This is a form-reply that isn't specific to your particular report) YAML::Syck has just acquired one new maintainer (me), it still doesn't have anyone that *cares* about it. But I'm willing to help solve your report & release a new version with the fix if it's easy for me. It now has a Git repository at: http://github.com/avar/YAML-Syck If your report is a patch that fixes a problem, great. Please remake the patch against Git by forking that repo and sending me a pull request on GitHub (or an update to this bug if you prefer git-format-patch(1) or some other repo provider..). Make sure to include a test for what you fixed. If your report is some code that fails (and you have a testcase for it) a patch against the test suite to demonstrate that failure would be very useful. It's OK if the test crashes and burns, see Test::More's docs for how to make TODO tests that fail now, but shouldn't. Even if it segfaults perl C<system $^X => qw/ -Mblib -MYAML::Syck .../> or something like that and checking the return value will do.
Ticket migrated to github as https://github.com/toddr/YAML-Syck/issues/42