**Additional evidence — root cause is a missing header at build time, not an ABI break**
`H2_MPLX_MSG` is not an exported symbol at all — it is a C preprocessor macro defined in `modules/http2/h2_mplx.h`: ```c #define H2_MPLX_MSG(m, msg) "h2_mplx(%d-%lu): " msg, m->child_num, (unsigned long)m->id ``` (see e.g. https://nightlies.apache.org/httpd/trunk/doxygen/h2__mplx_8h.html#ad618f2ad9ab0b4974ec74e2a223da6c1) It is used inside `ap_log_*error` / `ap_log_*cerror` calls in the http2 sources as a format-string helper, e.g. `ap_log_cerror(..., H2_MPLX_MSG(m, "stream cleanup"))`. The macro must be fully expanded by the preprocessor before compilation — it should never appear in the object file at all. The fact that `nm -D /usr/lib/apache2/modules/mod_http2.so` reports `U H2_MPLX_MSG` therefore proves that **the macro definition in `h2_mplx.h` was not visible to the compiler** when at least one `modules/http2/*.c` translation unit of the `+esm7` build was compiled. With the macro undefined, the compiler parsed `H2_MPLX_MSG(m, "...")` as an ordinary function call returning a string literal, and the linker happily emitted an unresolved external reference. Most likely cause: the USN-7639 backport pulled in newer upstream `modules/http2/*.c` files that use the `H2_MPLX_MSG` helper, but the matching `h2_mplx.h` from the same upstream revision was either not picked up or shadowed by an older copy in the build tree. Implications: - No upstream API or ABI break is involved. - Rebuilding `apache2-bin` against a `modules/http2/h2_mplx.h` that contains the `H2_MPLX_MSG` definition should produce a working `mod_http2.so` with no further source changes. - A simple build-time sanity check (`nm -D --undefined-only mod_http2.so | grep H2_` must be empty) would have caught this before release. Confirming the workaround `a2dismod -f http2` on the affected production host (Ubuntu 18.04 bionic ESM, KIX/OTRS helpdesk at a university); HTTP/1.1 service restored, HTTP/2 unavailable until a fixed `+esm8` build is published. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2154546 Title: apache2-bin 2.4.29-1ubuntu4.27+esm7 (bionic ESM): mod_http2.so has undefined symbol H2_MPLX_MSG - apache2 fails to start To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/2154546/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
