GNU bug report logs -
#79023
30.1.90; Suspicion of memory leak on internal_redisplay (MacOS)
Previous Next
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
I'm attaching 6 patches (for easy review/scrutiny/integration).
Those patches that I marked as tested was used by me for >1 week.
* render_block_small.patch (significant impact, tested):
This is similar patch to previous one, but it's minimal. It's crucial
to avoid "blink" redraws.
Still breaks smooth resizing, but frame-resize-pixelwise set to true
makes it unnoticable.
* cache_all_font_results.patch (significant impact, requires testing):
This one prevents huge leak. I was trying to debug emacs-mac version (which
has very deep traces for allocations, more 256 deep, which is limit for
Instrumentations).
That led to full malloc logging and discovery that macfont listings were
allocating plenty of font-related data. Some of it it never cleared.
I didn't test it and worry that caching "null" result might introduce
some bugs, but it was hundreds of megabytes of allocations on -Q instance.
* dont_flush_cg.patch (medium impact, tested):
Based on documentation of CGContextFlush it should seldom be used, as
it's much better to give OS possibility to decide when to flush. It
prevents non-needed renders (and allocations etc.)
* misc_releases.patch (small-mid impact, tested):
This one is based on Rudolf Adamkovič patch with some minor extra
releases and adjustments
(like releasing an object before setting it to nil ;))
* ns_native_api_dict.patch (small-mid impact, needs testing):
A small leak, but modified function had ~600_000 allocations after very
short test runs. Seems like it wasted a lot of power, so I decided it
should be checking dictionary hydrated at start and queried later
instead of checking during runtime.
I believe that high NSString allocation amount was indirectly caused by
using autorelease pools.
* nullify_frame.patch (small impact, tested):
releases reference to a frame, as I've found traces in which resources
were left behind, small leak.
---
Fingers crossed that patches go through ;-)
[nullify_frame.patch (text/x-patch, attachment)]
[ns_native_api_dict.patch (text/x-patch, attachment)]
[render_block_small.patch (text/x-patch, attachment)]
[cache_all_font_results.patch (text/x-patch, attachment)]
[dont_flush_cg.patch (text/x-patch, attachment)]
[misc_releases.patch (text/x-patch, attachment)]
[Message part 8 (text/plain, inline)]
Best,
Przemysław Alexander Kamiński
This bug report was last modified today.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.