httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tapple Gao <tapp...@gmail.com>
Subject Re: apr_shm_create succeeds then fails on Mac OS X
Date Mon, 28 Dec 2015 12:49:24 GMT
/tmp is not a special volume on my system, and has plenty of room for a 2MB file:
sh-3.2# df -h
Filesystem                          Size   Used  Avail Capacity  iused    ifree %iused  Mounted
on
/dev/disk0s2                       184Gi  170Gi   14Gi    93% 44604554  3741719   92%   /
devfs                              329Ki  329Ki    0Bi   100%     1138        0  100%   /dev
map -hosts                           0Bi    0Bi    0Bi   100%        0        0  100%   /net
map auto_home                        0Bi    0Bi    0Bi   100%        0        0  100%   /home
map -fstab                           0Bi    0Bi    0Bi   100%        0        0  100%   /Network/Servers
/dev/disk0s5                       442Gi  353Gi   89Gi    80% 92513182 23266901   80%   /Volumes/Shared
localhost:/18XTcmWVPTgvjvav7dUs5F  184Gi  184Gi    0Bi   100%        0        0  100%   /Volumes/MobileBackups


> On Dec 27, 2015, at 4:18 PM, Jim Jagielski <jim@jaguNET.com> wrote:
> 
> Are you *sure* that /tmp really has enough space?
> 
>> On Dec 27, 2015, at 8:47 AM, Sorin Manolache <sorinm@gmail.com> wrote:
>> 
>> On 2015-12-25 19:36, Tapple Gao wrote:
>>> Hi. I’m trying to get mod_tile working on the builtin apache in Mac OS X El
Capitan. I am running into a problem with apr_shm_create failing to allocate memory during
ap_hook_post_config:
>>> [Fri Dec 25 12:09:17.898197 2015] [tile:error] [pid 22431] Successfully create
shared memory segment size 888 on file /tmp/httpd_shm.22431
>>> [Fri Dec 25 12:09:17.898285 2015] [tile:error] [pid 22431] (12)Cannot allocate
memory: Failed to create shared memory segment size 2401448 on file /tmp/httpd_shm_delay.22431
>>> 
>>> Is there something I need to configure to get this shared memory working, or
increase the limit? This module is most often run on Ubuntu linux, where it’s been running
for years to power openstreetmap.org
>>> 
>>> 
>>>    /*
>>>     * Create a unique filename using our pid. This information is
>>>     * stashed in the global variable so the children inherit it.
>>>     * TODO get the location from the environment $TMPDIR or somesuch.
>>>     */
>>>    shmfilename = apr_psprintf(pconf, "/tmp/httpd_shm.%ld", (long int)getpid());
>>>    shmfilename_delaypool = apr_psprintf(pconf, "/tmp/httpd_shm_delay.%ld", (long
int)getpid());
>> 
>> 
>> I think that the location of the shmfile must be on a filesystem of a special type,
namely tmpfs, which maps in memory and not on disk. Execute "mount" and check if you have
such filesystems mounted. For example on my Linux machine:
>> 
>> $ mount
>> /dev/sda6 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
>> tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=398160k)
>> /dev/sda9 on /tmp type ext4 (rw,relatime,data=ordered)
>> 
>> As you see, / and /tmp are of disk partitions while /run/shm has a filesystem of
type tmpfs.
>> 
>> I suggest to change the code and use a different location from /tmp/... On Linux
the shared memory is often created in /run/shm/*. I have no experience with Mac OS X.
>> 
>> The cleanest way would be to implement what's written in the commentary of the code
above, namely the possibility to specify the path by an evrionment variable or from a configuration
directive.
>> 
>> Sorin
>> 
> 


Mime
View raw message