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

Fixed the leak responsible for the accumulation of unreferenced scalars #1

Merged
merged 13 commits into from May 6, 2013
Merged

Conversation

creaktive
Copy link
Collaborator

The leak occurs due to creation of empty base object inside the XS code. This fix also happens to solve the "Attempt to free unreferenced scalar: SV 0xdeadbeef during global destruction." issue.
Modifications:

  1. Reimplemented t/old-13slowleak.t as t/96-leak.t, using Devel::Leak. It now runs 10_000 iterations instead of 200. However, it's still fast, as the downloaded URL is "file:///$Bin/$Script" (by default). This was required to spot the problem.
  2. Updated Makefile.PL so pkg-config is now able to detect libcurl in non-standard locations (like $HOME). This was required for me to deploy test cases on multiple perlbrew-based installations.
  3. Updated inc/symbols-in-versions from libcurl/7.28.0 and created a .gitignore file. Not actually required to fix the leak, but hell, why not? :)
  4. The fix itself: in Curl.xs, HASHREF_BY_DEFAULT definition was updated, reverting the order of newRV_noinc() / sv_2mortal().

The dismissal of *"Attempt to free unreferenced scalar..." warning can be verified via Net::Curl::Simple test suite; while using the original Net::Curl, it repeatedly produces the aforementioned message:

...
t/42-coro-anyevent.t ..... 1/20 Please rebuild libcurl with AsynchDNS to avoid blocking DNS requests
# loaded implementation: Net/Curl/Simple/Async/AnyEvent.pm
Attempt to free unreferenced scalar: SV 0x7fa88b964378 during global destruction.
t/42-coro-anyevent.t ..... ok
...

I also "smoked" the patched Net::Curl on a reasonably large crawler system (which processes over 1 million HTML-pages every 24 hours) no unexpected behavior was detected.

@dolmen
Copy link

dolmen commented Dec 25, 2012

Reverse link to rt.cpan.org: RT#81053

creaktive added a commit that referenced this pull request May 6, 2013
Fixed the leak responsible for the accumulation of unreferenced scalars
@creaktive creaktive merged commit ccddffe into sparky:master May 6, 2013
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.

None yet

2 participants