|Main Archive Page > Month Archives > clamav-users archives|
On Apr 22, 2010, at 12:33 PM, Jason Evans wrote:
> The failure mode was trimmed before I was CC'ed, so I'm missing background information.
Thanks for the response. The bug report here:
...contains the useful details, but the ktrace of the point of failure is:
61805 clamd CALL mmap(0,0x9d55d6,PROT_READ,MAP_PRIVATE,0xb,0,0)
61805 clamd RET mmap -1 errno 12 Cannot allocate memory
61805 clamd CALL write(0x2,0xbf5c850c,0x28)
61805 clamd GIO fd 2 wrote 40 bytes
"LibClamAV Error: cli_pdf: mmap() failed
...which lead to mmap()'s documentation:
[ENOMEM] MAP_FIXED was specified and the addr argument was not
available. MAP_ANON was specified and insufficient
memory was available. The system has reached the per-
process mmap limit specified in the vm.max_proc_mmap
> However, I doubt the number of map entries is the problem. See procfs(5) on how to mount the proc filesystem, then look at /proc/<pid>/maps to see the VM map. My observation has been that the total number of entries is quite small, even for large applications (shared libraries tend to contribute more entries than malloc does).
> As an aside, jemalloc maps at least 1 MiB at a time, so it doesn't substantially contribute to the number of map entries even if the application somehow causes bad map fragmentation.
Acknowledged. Hopefully Royce can use this feedback to gather better information.