
bugzilla at apache
Jun 29, 2009, 8:10 AM
Views: 171
Permalink
|
|
[Bug 47449] New: mod_mem_cache 2.0 memory leak
|
|
https://issues.apache.org/bugzilla/show_bug.cgi?id=47449 Summary: mod_mem_cache 2.0 memory leak Product: Apache httpd-2 Version: 2.0-HEAD Platform: All OS/Version: All Status: NEW Keywords: PatchAvailable Severity: normal Priority: P2 Component: Other Modules AssignedTo: bugs[at]httpd.apache.org ReportedBy: poirier[at]pobox.com Created an attachment (id=23900) --> (https://issues.apache.org/bugzilla/attachment.cgi?id=23900) Fix memory leak in 2.0 mod_mem_cache In 2.0.x, mod_mem_cache has a memory leak. The attached patch corrects it. The problem doesn't happen in 2.2 or trunk, since mod_mem_cache's memory management was completely re-written for 2.2. The leak occurs when a cache entry expires, the cache determines that it is still valid, and updates the headers saved in the cache entry. The previously saved headers are never freed. Simply adding free() calls before saving the new headers resulted in instability under load, as other threads might still be accessing the older saved headers. The patch looks at the reference count, and if it might not be safe to free the old headers yet, remembers the pointers to free them later. Some alternative approaches would have been to use a process-wide lock to make sure no other thread could access the entry at the same time, but that would likely have had terrible effects on performance. Or a per-cache-entry lock might have been used, but managing those would require a pool for each cache entry, and by the time that was all done, we'd be half-way to the 2.2 code anyway. I've run this for hours, and a slightly earlier version for days, under the same load that originally reproduced the memory leak and then the instability with the simple fix. I don't know if mod_mem_cache in 2.0 is used widely enough to warrant fixing this. I'd rather just move to 2.2 myself, but couldn't in this case. But I wanted to at least provide the patch, in case someone else is running into the problem. -- Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: bugs-unsubscribe[at]httpd.apache.org For additional commands, e-mail: bugs-help[at]httpd.apache.org
|