httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tapple Gao <tapp...@gmail.com>
Subject apr_shm_create succeeds then fails on Mac OS X
Date Fri, 25 Dec 2015 17:36:02 GMT
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

FYI, I’m a total apache noob. I’d never even tried to set up an httpd server before this
week, let alone debug issues in a third-party module

Configuration:

Mac OS X 10.11.2 El Capitan
I have the latest server.app installed from: https://itunes.apple.com/us/app/os-x-server/id883878097?mt=12
I have built and installed mod_tile from git HEAD: https://github.com/openstreetmap/mod_tile

Full command line:

sh-3.2# ls -lh /tmp/httpd_*
ls: /tmp/httpd_*: No such file or directory
sh-3.2# SERVER_INSTALL_PATH_PREFIX=/Applications/Server.app/Contents/ServerRoot /usr/sbin/httpd
-D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -E /var/log/apache2/error_log
-D WEBSERVICE_ON -X
sh-3.2# ls -lh /tmp/httpd_*
-rw-r--r--  1 root  wheel     0B Dec 25 12:09 /tmp/httpd_shm_delay.22431
sh-3.2# 

Full logs:

[Fri Dec 25 12:09:17.858821 2015] [tile:notice] [pid 22431] Loading tile config default at
/osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and
mime type image/png
[Fri Dec 25 12:09:17.858990 2015] [core:trace3] [pid 22431] core.c(3112): Setting LogLevel
for all modules to trace8
[Fri Dec 25 12:09:17.861300 2015] [ssl:trace3] [pid 22431] ssl_engine_init.c(486): Creating
new SSL context (protocols: TLSv1)
[Fri Dec 25 12:09:17.861383 2015] [ssl:trace1] [pid 22431] ssl_engine_init.c(743): Configuring
permitted SSL ciphers [!aNULL:!eNULL:!EXP:AES:ALL:!aNULL:!eNULL:+RC4:@STRENGTH]
[Fri Dec 25 12:09:17.896125 2015] [tile:notice] [pid 22431] Loading tile config default at
/osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and
mime type image/png
[Fri Dec 25 12:09:17.896172 2015] [core:trace3] [pid 22431] core.c(3112): Setting LogLevel
for all modules to trace8
[Fri Dec 25 12:09:17.897983 2015] [proxy_balancer:debug] [pid 22431] mod_proxy_balancer.c(789):
AH01178: Doing balancers create: bal_persist is FALSE, AP_SLOTMEM_TYPE_CLEARINUSE
[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
[Fri Dec 25 12:09:17.898301 2015] [:emerg] [pid 22431] AH00020: Configuration Failed, exiting

Apache config:

sh-3.2# httpd -v
Server version: Apache/2.4.16 (Unix)
Server built:   Jul 31 2015 15:53:26
sh-3.2# SERVER_INSTALL_PATH_PREFIX=/Applications/Server.app/Contents/ServerRoot /usr/sbin/httpd
-D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -E /var/log/apache2/error_log
-D WEBSERVICE_ON -t -D DUMP_MODULES
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 mpm_prefork_module (static)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 access_compat_module (shared)
 cache_module (shared)
 cache_disk_module (shared)
 socache_shmcb_module (shared)
 socache_dbm_module (shared)
 socache_memcache_module (shared)
 dumpio_module (shared)
 reqtimeout_module (shared)
 filter_module (shared)
 substitute_module (shared)
 deflate_module (shared)
 mime_module (shared)
 log_config_module (shared)
 log_forensic_module (shared)
 logio_module (shared)
 env_module (shared)
 mime_magic_module (shared)
 expires_module (shared)
 headers_module (shared)
 usertrack_module (shared)
 setenvif_module (shared)
 version_module (shared)
 remoteip_module (shared)
 proxy_module (shared)
 proxy_connect_module (shared)
 proxy_http_module (shared)
 proxy_fcgi_module (shared)
 proxy_scgi_module (shared)
 proxy_wstunnel_module (shared)
 proxy_ajp_module (shared)
 proxy_balancer_module (shared)
 proxy_express_module (shared)
 slotmem_shm_module (shared)
 ssl_module (shared)
 lbmethod_byrequests_module (shared)
 unixd_module (shared)
 dav_module (shared)
 status_module (shared)
 autoindex_module (shared)
 asis_module (shared)
 info_module (shared)
 cgi_module (shared)
 dav_fs_module (shared)
 dav_lock_module (shared)
 vhost_alias_module (shared)
 negotiation_module (shared)
 dir_module (shared)
 actions_module (shared)
 speling_module (shared)
 alias_module (shared)
 rewrite_module (shared)
 hfs_apple_module (shared)
 auth_digest_apple_module (shared)
 apple_auth_module (shared)
 apple_status_module (shared)
 tile_module (shared)
sh-3.2# 

Full source code (modified by me with extra logging):

    /*
     * 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());

    /* Now create that segment 
     * would prefer to use scfg->configs->nelts here but that does
     * not seem to be set at this stage, so rely on previously set layerCount */

    size = sizeof(stats_data) + layerCount * 2 * sizeof(apr_uint64_t);
    rs = apr_shm_create(&stats_shm, size,
                        (const char *) shmfilename, pconf);
    if (rs != APR_SUCCESS) {
        ap_log_error(APLOG_MARK, APLOG_ERR, rs, s,
                     "Failed to create shared memory segment size %d on file %s",
                     size, shmfilename);
        return HTTP_INTERNAL_SERVER_ERROR;
    } else {
        ap_log_error(APLOG_MARK, APLOG_ERR, rs, s,
                     "Successfully create shared memory segment size %d on file %s",
                     size, shmfilename);
    }

    size = sizeof(delaypool);
    rs = apr_shm_create(&delaypool_shm, size,
                        (const char *) shmfilename_delaypool, pconf);
    if (rs != APR_SUCCESS) {
        ap_log_error(APLOG_MARK, APLOG_ERR, rs, s,
                     "Failed to create shared memory segment size %d on file %s",
                     size, shmfilename_delaypool);
        return HTTP_INTERNAL_SERVER_ERROR;
    } else {
        ap_log_error(APLOG_MARK, APLOG_ERR, rs, s,
                     "Successfully create shared memory segment size %d on file %s",
                     size, shmfilename_delaypool);
    }











Mime
View raw message