Bug 235173 - www/apache24: mod_ssl.so: Can't locate structure ssl_module
Summary: www/apache24: mod_ssl.so: Can't locate structure ssl_module
Status: Closed Not A Bug
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-apache (Nobody)
Depends on:
Reported: 2019-01-24 08:31 UTC by theis
Modified: 2019-01-24 17:00 UTC (History)
1 user (show)

See Also:
bugzilla: maintainer-feedback? (apache)


Note You need to log in before you can comment on or make changes to this bug.
Description theis 2019-01-24 08:31:03 UTC
After upgrade to 2.4.38 Apache fails the configtest:
Syntax error on line 148 of /usr/local/etc/apache24/httpd.conf: Can't locate API module structure `ssl_module' in file /usr/local/libexec/apache24/mod_ssl.so: Undefined symbol "ssl_module"

Running the configtest with LogLevel debug shows that mod_ssl is loaded:
[Thu Jan 24 09:30:07.467643 2019] [so:debug] [pid 98002] mod_so.c(266): AH01575: loaded module ssl_module from /usr/local/libexec/apache24/mod_ssl.so

Also ldd mod_ssl.so doesn't show any missing shared libs.

I'm using openssl from base, openssl from ports is not installed.

Output from pkg info apache24:
% pkg info apache24
Name           : apache24
Version        : 2.4.38
Installed on   : Thu Jan 24 08:39:24 2019 CET
Origin         : www/apache24
Architecture   : FreeBSD:12:amd64
Prefix         : /usr/local
Categories     : ipv6 www
Licenses       : APACHE20
Maintainer     : apache@FreeBSD.org
WWW            : https://httpd.apache.org/
Comment        : Version 2.4.x of Apache web server
Options        :
        ACCESS_COMPAT  : on
        ACTIONS        : on
        ALIAS          : on
        ALLOWMETHODS   : on
        ASIS           : on
        AUTHNZ_FCGI    : on
        AUTHNZ_LDAP    : off
        AUTHN_ANON     : on
        AUTHN_CORE     : on
        AUTHN_DBD      : on
        AUTHN_DBM      : on
        AUTHN_FILE     : on
        AUTHN_SOCACHE  : on
        AUTHZ_CORE     : on
        AUTHZ_DBD      : on
        AUTHZ_DBM      : on
        AUTHZ_HOST     : on
        AUTHZ_OWNER    : on
        AUTHZ_USER     : on
        AUTH_BASIC     : on
        AUTH_DIGEST    : on
        AUTH_FORM      : on
        AUTOINDEX      : on
        BROTLI         : off
        BUCKETEER      : off
        BUFFER         : on
        CACHE          : on
        CACHE_DISK     : on
        CACHE_SOCACHE  : on
        CASE_FILTER    : off
        CASE_FILTER_IN : off
        CERN_META      : on
        CGI            : on
        CGID           : on
        CHARSET_LITE   : on
        DATA           : on
        DAV            : on
        DAV_FS         : on
        DAV_LOCK       : on
        DBD            : on
        DEFLATE        : on
        DIALUP         : on
        DIR            : on
        DOCS           : on
        DUMPIO         : on
        ECHO           : off
        ENV            : on
        EXAMPLE_HOOKS  : off
        EXAMPLE_IPC    : off
        EXPIRES        : on
        EXT_FILTER     : on
        FILE_CACHE     : on
        FILTER         : on
        HEADERS        : on
        HEARTBEAT      : on
        HEARTMONITOR   : on
        HTTP2          : on
        IDENT          : off
        IMAGEMAP       : on
        INCLUDE        : on
        INFO           : on
        IPV4_MAPPED    : off
        LDAP           : off
        LOGIO          : on
        LOG_DEBUG      : on
        LOG_FORENSIC   : on
        LUA            : off
        LUAJIT         : off
        MACRO          : on
        MD             : off
        MIME           : on
        MIME_MAGIC     : on
        MPM_EVENT      : off
        MPM_PREFORK    : on
        MPM_SHARED     : on
        MPM_WORKER     : off
        NEGOTIATION    : on
        PROXY          : on
        PROXY_AJP      : on
        PROXY_BALANCER : on
        PROXY_CONNECT  : on
        PROXY_EXPRESS  : on
        PROXY_FCGI     : on
        PROXY_FDPASS   : on
        PROXY_FTP      : on
        PROXY_HCHECK   : on
        PROXY_HTML     : on
        PROXY_HTTP     : on
        PROXY_HTTP2    : on
        PROXY_SCGI     : on
        PROXY_UWSGI    : on
        PROXY_WSTUNNEL : on
        RATELIMIT      : on
        REFLECTOR      : on
        REMOTEIP       : on
        REQTIMEOUT     : on
        REQUEST        : on
        REWRITE        : on
        SED            : on
        SESSION        : on
        SESSION_COOKIE : on
        SESSION_CRYPTO : on
        SESSION_DBD    : on
        SETENVIF       : on
        SLOTMEM_PLAIN  : on
        SLOTMEM_SHM    : on
        SOCACHE_DBM    : on
        SOCACHE_DC     : off
        SOCACHE_SHMCB  : on
        SPELING        : on
        SSL            : on
        STATUS         : on
        SUBSTITUTE     : on
        SUEXEC         : off
        UNIQUE_ID      : on
        USERDIR        : on
        USERTRACK      : on
        VERSION        : on
        VHOST_ALIAS    : on
        WATCHDOG       : on
        XML2ENC        : on
Shared Libs required:
Annotations    :
        FreeBSD_version: 1200086
        cpe            : cpe:2.3:a:apache:http_server:2.4.38:::::freebsd12:x64
Flat size      : 27.3MiB
Description    :
The Apache HTTP Server Project is an effort to develop and maintain an
open-source HTTP server for various modern desktop and server operating
systems, such as UNIX and Windows NT. The goal of this project is to
provide a secure, efficient and extensible server which provides HTTP
services in sync with the current HTTP standards.
The 2.x branch of Apache Web Server includes several improvements like
threading, use of APR, native IPv6 and SSL support, and many more.

WWW: https://httpd.apache.org/
Comment 1 theis 2019-01-24 11:24:15 UTC
2 Updates:
I went back to 2.4.35 but same problem. So it looks it is not something with the port itself but build infrastructure, ...

I did "nm mod_ssl.so" and it shows a line 
0000000000035020 d ssl_module
as if the symbol is there, but not exported. 
On the other hand, "nm mod_session.so" shows a line 
0000000000004018 D session_module
Comment 2 theis 2019-01-24 14:21:10 UTC
Another update:
In the build log I found some suspicious lines:
 eval: /usr/local/bin/nm: not found
They appear for some modules only, one of them my mod_ssl. I checked mod_https, which I don't enable, and that was also missing the symbol http2_module.
After I copied /usr/bin/nm to /usr/local/bin/nm the build was OK and I could use mod_ssl again.
So: why does the build look for nm in /usr/local/bin and not /usr/bin? 
And what does it need nm for?
And why won't it export the symbols if nm is missing?
Comment 3 Olli Hauer freebsd_committer 2019-01-24 14:37:18 UTC
It is possible your devel/apr was build while nm was installed as package
apache includes some files from the apr package during the build, and if nm, grep, or other tools where installed during apr build the location is recorded in the files located in /usr/local/share/apr/build-1/.

Change the path there (e.g. in /usr/local/share/apr/build-1/libtool) should fix your issue.
Comment 4 theis 2019-01-24 15:32:23 UTC
YES! I reinstalled devel/apr1 and now the build was OK.

It looks like nm was installed from devel/binutils, but with the upgrade to 12.0 I cleaned up the ports which where no longer required.