Registering it as a cleanup is likely better
> On Dec 28, 2015, at 9:09 AM, Yann Ylavic <ylavic....@gmail.com> wrote:
>
> You could possible add a call to apr_shm_remove(shmfilename, pconf)
> (resp. shmfilename_delaypool) in the module's post_config, before the
> SHMs are created with apr_shm_create().
>
> Regards,
> Yann.
>
> On Mon, Dec 28, 2015 at 2:56 PM, Jim Jagielski <j...@jagunet.com> wrote:
>> Looks like the module is not cleaning up and removing the shared memory
>> segment during a shutdown and/or restart.
>>
>>> On Dec 28, 2015, at 8:43 AM, Tapple Gao <tapp...@gmail.com> wrote:
>>>
>>> I found something that helped: I googled and discovered the ipcs utility:
>>>
>>> 68 08:24 tapple /Library/Server/Web/Config/apache2/sites $ ipcs -am
>>> IPC status from <running system> as of Mon Dec 28 08:24:42 EST 2015
>>> T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH
>>> SEGSZ CPID LPID ATIME DTIME CTIME
>>> Shared Memory:
>>> m 65536 0x0052e2c1 --rw------- postgres postgres postgres postgres 6
>>> 56 484 484 19:25:25 8:24:22 19:25:25
>>> m 1572865 0x0101d953 --rw------- root wheel root wheel 0
>>> 2401448 78687 78687 17:32:23 17:32:58 17:32:23
>>> m 65541 0x00000000 --rw------- _devicemgr _devicemgr _devicemgr _devicemgr
>>> 5 1 652 652 19:25:36 8:24:22 19:25:36
>>> m 2293766 0x0101d952 --rw------- root wheel root wheel 0
>>> 904 78687 78687 17:32:23 17:32:58 17:32:23
>>>
>>> Hey. that size of 2401448 looks familiar. yup. that’s the size listed of
>>> the failed allocation in the logs. Let’s try removing it:
>>>
>>> 171 08:26 tapple /Library/Server/Web/Config/apache2/sites $ sudo ipcrm -m
>>> 1572865
>>> Password:
>>> 172 08:26 tapple /Library/Server/Web/Config/apache2/sites $ ipcs -am
>>> IPC status from <running system> as of Mon Dec 28 08:26:38 EST 2015
>>> T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH
>>> SEGSZ CPID LPID ATIME DTIME CTIME
>>> Shared Memory:
>>> m 65536 0x0052e2c1 --rw------- postgres postgres postgres postgres 6
>>> 56 484 484 19:25:25 8:26:22 19:25:25
>>> m 65541 0x00000000 --rw------- _devicemgr _devicemgr _devicemgr _devicemgr
>>> 5 1 652 652 19:25:36 8:26:22 19:25:36
>>> m 2293766 0x0101d952 --rw------- root wheel root wheel 0
>>> 904 78687 78687 17:32:23 17:32:58 17:32:23
>>>
>>> Now my server starts. Hovever, as soon as I kill and restart the server,
>>> the same problem returns.
>>> I’m not familiar with ipc at all. Anybody know why any of this happened?
>>> why the shared memory stuck around after apache quit? Why it couldn’t
>>> allocate another block? why it worked after deleting the leftover one?
>>>
>>>> On Dec 28, 2015, at 7:49 AM, Tapple Gao <tapp...@gmail.com> wrote:
>>>>
>>>> /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 <j...@jagunet.com> wrote:
>>>>>
>>>>> Are you *sure* that /tmp really has enough space?
>>>>>
>>>>>> On Dec 27, 2015, at 8:47 AM, Sorin Manolache <sor...@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
>>>>>>
>>>>>
>>>>
>>>
>>