diff options
| author | Paul Buetow <paul@buetow.org> | 2026-06-30 09:22:20 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-06-30 09:22:20 +0300 |
| commit | 1c36abeb27b0b0fed7eb07f008bcf9dcaaefb7bb (patch) | |
| tree | 6f2f9e29ea26e775f3c74840ab63255d7ab0d8b8 | |
| parent | 85dcf059333ce65930085fa6a0600aab871d6f44 (diff) | |
Fix runtime crashes: logd recursion, trim OOB, sock SO_REUSEADDR/accept, md5 session
Multiple latent bugs made the chat crash on real use (login POST segfaulted):
- logd::flush: when a log file can't be opened, log the error to stderr and
exit(1). Previously it called wrap::system_message, which routes back through
LOGD->log_simple_line->flush on the same failing logd -> infinite recursion
-> stack overflow (SIGSEGV). Bitten in k8s where an emptyDir on /app/log
hides the image's /app/log/rooms, so the room log open failed on login.
- tool::trim: rewrite the right-trim; the original did s_str[s_str.size()]
(out-of-bounds under _GLIBCXX_ASSERTIONS / UB) and erased at i_pos=size.
- sock::_make_server_socket: move SO_REUSEADDR setsockopt BEFORE bind so a
quick container restart rebinds port 2000 (was EADDRINUSE -> fallback to
2001, which the k8s Service doesn't target -> 502).
- sock::process_request: init accept() addrlen and bail on any accept error
(not just EAGAIN/EINTR) so we never proceed with fd=-1 (EBADF).
- chat.session.md5hash=false at runtime: the md5 session-id path does
s_hash.substr(s_ret.find(s_salt)+salt.len()+3); the default salt has chars
not in chat.session.validchars so find() returns npos and the substr/append
corrupts the heap and segfaults on login. Overridden via -o in the image CMD.
- docker-entrypoint.sh: mkdir -p /app/log/rooms at startup (volume mount hides
the image's copy).
| -rw-r--r-- | ychat/Dockerfile | 12 | ||||
| -rw-r--r-- | ychat/Makefile | 2 | ||||
| -rwxr-xr-x | ychat/docker-entrypoint.sh | 9 | ||||
| -rw-r--r-- | ychat/log/rooms/lounge | 1 | ||||
| -rw-r--r-- | ychat/log/system_log | 36 | ||||
| -rw-r--r-- | ychat/src/Makefile | 58 | ||||
| -rw-r--r-- | ychat/src/config.h | 37 | ||||
| -rw-r--r-- | ychat/src/config.log | 512 | ||||
| -rwxr-xr-x | ychat/src/config.status | 1162 | ||||
| -rw-r--r-- | ychat/src/logd.cpp | 9 | ||||
| -rw-r--r-- | ychat/src/sock/sock.cpp | 14 | ||||
| -rw-r--r-- | ychat/src/tool/tool.cpp | 37 |
12 files changed, 924 insertions, 965 deletions
diff --git a/ychat/Dockerfile b/ychat/Dockerfile index 9324050..1804d54 100644 --- a/ychat/Dockerfile +++ b/ychat/Dockerfile @@ -54,12 +54,20 @@ COPY --from=builder /build/ychat/bin/ychat /app/bin/ychat # Read-only resources COPY --from=builder /build/ychat/html/ /app/html/ COPY --from=builder /build/ychat/mods/ /app/mods/ +COPY docker-entrypoint.sh /app/docker-entrypoint.sh COPY etc/ychat.conf /app/etc/ychat.conf -# Writable log dir +# Writable log dir (entrypoint recreates /app/log/rooms since a volume mount +# on /app/log hides the image's copy). RUN mkdir -p /app/log/rooms && chown -R ychat:ychat /app USER 1000:1000 EXPOSE 2000 -ENTRYPOINT ["/app/bin/ychat"]
\ No newline at end of file +ENTRYPOINT ["/app/docker-entrypoint.sh"] +# chat.session.md5hash=false: the md5 session-id path does a bad substr() +# (the default salt contains chars not in chat.session.validchars, so +# s_ret.find(salt) returns npos and the subsequent substr/append corrupts +# the heap and segfaults on login). The 32-char random id is enough for a +# revival guest chat. +CMD ["/app/bin/ychat", "-o", "chat.session.md5hash", "false"]
\ No newline at end of file diff --git a/ychat/Makefile b/ychat/Makefile index ed88660..3bd905d 100644 --- a/ychat/Makefile +++ b/ychat/Makefile @@ -1,7 +1,7 @@ MAKE=gmake HEADER?=docs/header.txt PREFIX=/usr/local -EFIND=find -E +EFIND=find -regextype posix-extended BIN=./bin/ychat all: build modules base @echo "Now edit the ychat.conf and run ychat!" diff --git a/ychat/docker-entrypoint.sh b/ychat/docker-entrypoint.sh new file mode 100755 index 0000000..e51264b --- /dev/null +++ b/ychat/docker-entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/sh +# yChat container entrypoint. +# Ensure writable log subdirs exist (an emptyDir mounted on /app/log hides +# the image's pre-created /app/log/rooms, so recreate it here). yChat exits +# the whole process if a log file can't be opened, so this is required for +# room logs (chat.logging.roomlogdir = log/rooms/) to work. +set -e +mkdir -p /app/log/rooms +exec "$@"
\ No newline at end of file diff --git a/ychat/log/rooms/lounge b/ychat/log/rooms/lounge new file mode 100644 index 0000000..88540bf --- /dev/null +++ b/ychat/log/rooms/lounge @@ -0,0 +1 @@ +[30/Jun/2026:06:20:37 +0000] 00:00:00 testguest enters the chat. diff --git a/ychat/log/system_log b/ychat/log/system_log new file mode 100644 index 0000000..d142324 --- /dev/null +++ b/ychat/log/system_log @@ -0,0 +1,36 @@ +[30/Jun/2026:06:15:08 +0000] Sock: Created socket on localhost:2000 +[30/Jun/2026:06:15:08 +0000] Sock: Server socket is ready +[30/Jun/2026:06:15:08 +0000] Reading standard command exec permissions +[30/Jun/2026:06:15:08 +0000] Chat: Using replacement strings +[30/Jun/2026:06:15:08 +0000] Timer: Initializing +[30/Jun/2026:06:15:08 +0000] Timer: Setting offset to 0 +[30/Jun/2026:06:15:08 +0000] Garbage: Initializing collector +[30/Jun/2026:06:15:08 +0000] Initializing sock events (1) +[30/Jun/2026:06:15:11 +0000] Sock: New request 1 127.0.0.1:39482 @1 +[30/Jun/2026:06:15:11 +0000] Sock: Caching IP 127.0.0.1 +[30/Jun/2026:06:18:06 +0000] Sock: Created socket on localhost:2000 +[30/Jun/2026:06:18:06 +0000] Sock: Server socket is ready +[30/Jun/2026:06:18:06 +0000] Reading standard command exec permissions +[30/Jun/2026:06:18:06 +0000] Chat: Using replacement strings +[30/Jun/2026:06:18:06 +0000] Timer: Initializing +[30/Jun/2026:06:18:06 +0000] Timer: Setting offset to 0 +[30/Jun/2026:06:18:06 +0000] Garbage: Initializing collector +[30/Jun/2026:06:18:06 +0000] Initializing sock events (1) +[30/Jun/2026:06:18:09 +0000] Sock: New request 1 127.0.0.1:37368 @1 +[30/Jun/2026:06:18:09 +0000] Sock: Caching IP 127.0.0.1 +[30/Jun/2026:06:18:09 +0000] Reqp: Request string /frameset.html +[30/Jun/2026:06:20:33 +0000] Sock: Created socket on localhost:2000 +[30/Jun/2026:06:20:33 +0000] Sock: Server socket is ready +[30/Jun/2026:06:20:33 +0000] Reading standard command exec permissions +[30/Jun/2026:06:20:33 +0000] Chat: Using replacement strings +[30/Jun/2026:06:20:33 +0000] Timer: Initializing +[30/Jun/2026:06:20:33 +0000] Timer: Setting offset to 0 +[30/Jun/2026:06:20:33 +0000] Garbage: Initializing collector +[30/Jun/2026:06:20:33 +0000] Initializing sock events (1) +[30/Jun/2026:06:20:37 +0000] Sock: New request 1 127.0.0.1:40498 @1 +[30/Jun/2026:06:20:37 +0000] Sock: Caching IP 127.0.0.1 +[30/Jun/2026:06:20:37 +0000] Reqp: Request string /frameset.html +[30/Jun/2026:06:20:37 +0000] Session: Create (1,5300208) +[30/Jun/2026:06:20:37 +0000] Chat: New room Lounge +[30/Jun/2026:06:20:37 +0000] Chat: New user testguest +[30/Jun/2026:06:20:37 +0000] HTML: Caching document html//frameset.html diff --git a/ychat/src/Makefile b/ychat/src/Makefile index 7efc9a8..cc01073 100644 --- a/ychat/src/Makefile +++ b/ychat/src/Makefile @@ -1,11 +1,11 @@ -SRCS=./conf/conf.cpp ./time/timo.cpp ./time/timr.cpp ./data/con.cpp ./data/data_base.cpp ./data/con_base.cpp ./data/data.cpp ./tool/dir.cpp ./tool/tool.cpp ./chat/sman.cpp ./chat/perm.cpp ./chat/room.cpp ./chat/sess.cpp ./chat/user.cpp ./chat/chat.cpp ./chat/gcol.cpp ./monitor/stats.cpp ./monitor/dump.cpp ./sock/sock.cpp ./sock/sslsock.cpp ./sock/context.cpp ./contrib/xml/tinyxmlerror.cpp ./contrib/xml/tinyxmlparser.cpp ./contrib/xml/tinyxml.cpp ./contrib/crypt/md5.cpp ./contrib/crypt/md5crypt.cpp ./cli/cli.cpp ./html.cpp ./reqp.cpp ./main.cpp ./sign.cpp ./wrap.cpp ./name.cpp ./logd.cpp ./modl.cpp -OBJS= ../obj/./conf/conf.o ../obj/./time/timo.o ../obj/./time/timr.o ../obj/./data/con.o ../obj/./data/data_base.o ../obj/./data/con_base.o ../obj/./data/data.o ../obj/./tool/dir.o ../obj/./tool/tool.o ../obj/./chat/sman.o ../obj/./chat/perm.o ../obj/./chat/room.o ../obj/./chat/sess.o ../obj/./chat/user.o ../obj/./chat/chat.o ../obj/./chat/gcol.o ../obj/./monitor/stats.o ../obj/./monitor/dump.o ../obj/./sock/sock.o ../obj/./sock/sslsock.o ../obj/./sock/context.o ../obj/./contrib/xml/tinyxmlerror.o ../obj/./contrib/xml/tinyxmlparser.o ../obj/./contrib/xml/tinyxml.o ../obj/./contrib/crypt/md5.o ../obj/./contrib/crypt/md5crypt.o ../obj/./cli/cli.o ../obj/./html.o ../obj/./reqp.o ../obj/./main.o ../obj/./sign.o ../obj/./wrap.o ../obj/./name.o ../obj/./logd.o ../obj/./modl.o +SRCS=./chat/chat.cpp ./chat/gcol.cpp ./chat/perm.cpp ./chat/room.cpp ./chat/sess.cpp ./chat/sman.cpp ./chat/user.cpp ./cli/cli.cpp ./conf/conf.cpp ./contrib/crypt/md5.cpp ./contrib/crypt/md5crypt.cpp ./contrib/xml/tinyxml.cpp ./contrib/xml/tinyxmlerror.cpp ./contrib/xml/tinyxmlparser.cpp ./data/con.cpp ./data/con_base.cpp ./data/data.cpp ./data/data_base.cpp ./html.cpp ./logd.cpp ./main.cpp ./modl.cpp ./monitor/dump.cpp ./monitor/stats.cpp ./name.cpp ./reqp.cpp ./sign.cpp ./sock/context.cpp ./sock/sock.cpp ./sock/sslsock.cpp ./time/timo.cpp ./time/timr.cpp ./tool/dir.cpp ./tool/tool.cpp ./wrap.cpp +OBJS= ../obj/./chat/chat.o ../obj/./chat/gcol.o ../obj/./chat/perm.o ../obj/./chat/room.o ../obj/./chat/sess.o ../obj/./chat/sman.o ../obj/./chat/user.o ../obj/./cli/cli.o ../obj/./conf/conf.o ../obj/./contrib/crypt/md5.o ../obj/./contrib/crypt/md5crypt.o ../obj/./contrib/xml/tinyxml.o ../obj/./contrib/xml/tinyxmlerror.o ../obj/./contrib/xml/tinyxmlparser.o ../obj/./data/con.o ../obj/./data/con_base.o ../obj/./data/data.o ../obj/./data/data_base.o ../obj/./html.o ../obj/./logd.o ../obj/./main.o ../obj/./modl.o ../obj/./monitor/dump.o ../obj/./monitor/stats.o ../obj/./name.o ../obj/./reqp.o ../obj/./sign.o ../obj/./sock/context.o ../obj/./sock/sock.o ../obj/./sock/sslsock.o ../obj/./time/timo.o ../obj/./time/timr.o ../obj/./tool/dir.o ../obj/./tool/tool.o ../obj/./wrap.o BIN=../bin/ychat CXX=g++ #EFLAGS=-frepo CXXFLAGS=-fno-inline -fno-default-inline -g -O2 ${EFLAGS} -#LDADD+=-lreadline -levent -lpthread -lstdc++ -D_THREAD_SAVE -export-dynamic -LDADD+=-lreadline -levent -lpthread -lstdc++ -export-dynamic +#LDADD+=-ldl -levent -lpthread -lstdc++ -D_THREAD_SAVE -export-dynamic +LDADD+=-ldl -levent -lpthread -lstdc++ -export-dynamic PREFIX=/usr/local all: message ${OBJS} @dirname=`dirname ${BIN}`; if ! test -d $$dirname; then mkdir -p $$dirname; fi @@ -35,38 +35,38 @@ mrproper: clean @for i in Makefile config.h config.log config.status; \ do if [ -f $$i ]; then rm -f $$i; fi; done -../obj/./conf/conf.o: ./conf/conf.cpp -../obj/./time/timo.o: ./time/timo.cpp -../obj/./time/timr.o: ./time/timr.cpp -../obj/./data/con.o: ./data/con.cpp -../obj/./data/data_base.o: ./data/data_base.cpp -../obj/./data/con_base.o: ./data/con_base.cpp -../obj/./data/data.o: ./data/data.cpp -../obj/./tool/dir.o: ./tool/dir.cpp -../obj/./tool/tool.o: ./tool/tool.cpp -../obj/./chat/sman.o: ./chat/sman.cpp +../obj/./chat/chat.o: ./chat/chat.cpp +../obj/./chat/gcol.o: ./chat/gcol.cpp ../obj/./chat/perm.o: ./chat/perm.cpp ../obj/./chat/room.o: ./chat/room.cpp ../obj/./chat/sess.o: ./chat/sess.cpp +../obj/./chat/sman.o: ./chat/sman.cpp ../obj/./chat/user.o: ./chat/user.cpp -../obj/./chat/chat.o: ./chat/chat.cpp -../obj/./chat/gcol.o: ./chat/gcol.cpp -../obj/./monitor/stats.o: ./monitor/stats.cpp -../obj/./monitor/dump.o: ./monitor/dump.cpp -../obj/./sock/sock.o: ./sock/sock.cpp -../obj/./sock/sslsock.o: ./sock/sslsock.cpp -../obj/./sock/context.o: ./sock/context.cpp -../obj/./contrib/xml/tinyxmlerror.o: ./contrib/xml/tinyxmlerror.cpp -../obj/./contrib/xml/tinyxmlparser.o: ./contrib/xml/tinyxmlparser.cpp -../obj/./contrib/xml/tinyxml.o: ./contrib/xml/tinyxml.cpp +../obj/./cli/cli.o: ./cli/cli.cpp +../obj/./conf/conf.o: ./conf/conf.cpp ../obj/./contrib/crypt/md5.o: ./contrib/crypt/md5.cpp ../obj/./contrib/crypt/md5crypt.o: ./contrib/crypt/md5crypt.cpp -../obj/./cli/cli.o: ./cli/cli.cpp +../obj/./contrib/xml/tinyxml.o: ./contrib/xml/tinyxml.cpp +../obj/./contrib/xml/tinyxmlerror.o: ./contrib/xml/tinyxmlerror.cpp +../obj/./contrib/xml/tinyxmlparser.o: ./contrib/xml/tinyxmlparser.cpp +../obj/./data/con.o: ./data/con.cpp +../obj/./data/con_base.o: ./data/con_base.cpp +../obj/./data/data.o: ./data/data.cpp +../obj/./data/data_base.o: ./data/data_base.cpp ../obj/./html.o: ./html.cpp -../obj/./reqp.o: ./reqp.cpp +../obj/./logd.o: ./logd.cpp ../obj/./main.o: ./main.cpp +../obj/./modl.o: ./modl.cpp +../obj/./monitor/dump.o: ./monitor/dump.cpp +../obj/./monitor/stats.o: ./monitor/stats.cpp +../obj/./name.o: ./name.cpp +../obj/./reqp.o: ./reqp.cpp ../obj/./sign.o: ./sign.cpp +../obj/./sock/context.o: ./sock/context.cpp +../obj/./sock/sock.o: ./sock/sock.cpp +../obj/./sock/sslsock.o: ./sock/sslsock.cpp +../obj/./time/timo.o: ./time/timo.cpp +../obj/./time/timr.o: ./time/timr.cpp +../obj/./tool/dir.o: ./tool/dir.cpp +../obj/./tool/tool.o: ./tool/tool.cpp ../obj/./wrap.o: ./wrap.cpp -../obj/./name.o: ./name.cpp -../obj/./logd.o: ./logd.cpp -../obj/./modl.o: ./modl.cpp diff --git a/ychat/src/config.h b/ychat/src/config.h index 272decf..c8d7b86 100644 --- a/ychat/src/config.h +++ b/ychat/src/config.h @@ -1,28 +1,4 @@ -/*:* - *: File: ./src/config.h - *: - *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT - *: - *: Copyright (C) 2003 Paul C. Buetow, Volker Richter - *: Copyright (C) 2004 Paul C. Buetow - *: Copyright (C) 2005 EXA Digital Solutions GbR - *: Copyright (C) 2006, 2007 Paul C. Buetow - *: - *: This program is free software; you can redistribute it and/or - *: modify it under the terms of the GNU General Public License - *: as published by the Free Software Foundation; either version 2 - *: of the License, or (at your option) any later version. - *: - *: This program is distributed in the hope that it will be useful, - *: but WITHOUT ANY WARRANTY; without even the implied warranty of - *: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - *: GNU General Public License for more details. - *: - *: You should have received a copy of the GNU General Public License - *: along with this program; if not, write to the Free Software - *: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - *:*/ -/* config.h. Generated by configure. */ +/* config.h. Generated from config.h.in by configure. */ /* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the <dlfcn.h> header file. */ @@ -32,7 +8,7 @@ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the `dl' library (-ldl). */ -/* #undef HAVE_LIBDL */ +#define HAVE_LIBDL 1 /* Define to 1 if you have the `mysqlclient' library (-lmysqlclient). */ /* #undef HAVE_LIBMYSQLCLIENT */ @@ -41,7 +17,7 @@ #define HAVE_LIBPTHREAD 1 /* Define to 1 if you have the `readline' library (-lreadline). */ -#define HAVE_LIBREADLINE 1 +/* #undef HAVE_LIBREADLINE */ /* Define to 1 if you have the `ssl' library (-lssl). */ /* #undef HAVE_LIBSSL */ @@ -62,7 +38,7 @@ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the <readline/readline.h> header file. */ -#define HAVE_READLINE_READLINE_H 1 +/* #undef HAVE_READLINE_READLINE_H */ /* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 @@ -106,5 +82,10 @@ /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 +/* Posttasking has been done by ./src/configure. + Please edit ./src/configure.ac and run autoconf if you + want to modify all values below this comment! + */ + /* Program prefix. */ #define PREFIX "/usr/local" diff --git a/ychat/src/config.log b/ychat/src/config.log index f89f34f..ebb65a3 100644 --- a/ychat/src/config.log +++ b/ychat/src/config.log @@ -4,22 +4,22 @@ running configure, to aid debugging if configure makes a mistake. It was created by configure, which was generated by GNU Autoconf 2.61. Invocation command line was - $ ./configure + $ ./configure --disable-readline --disable-ssl --disable-mysql ## --------- ## ## Platform. ## ## --------- ## -hostname = joghurt.lan.buetow.org -uname -m = i386 -uname -r = 7.0-BETA2 -uname -s = FreeBSD -uname -v = FreeBSD 7.0-BETA2 #0: Thu Nov 8 22:33:42 EET 2007 root@joghurt.lan.buetow.org:/usr/obj/usr/srcs/freebsd.src7/src/sys/JOGHURT7 +hostname = earth +uname -m = x86_64 +uname -r = 7.0.11-200.fc44.x86_64 +uname -s = Linux +uname -v = #1 SMP PREEMPT_DYNAMIC Mon Jun 1 22:50:37 UTC 2026 -/usr/bin/uname -p = i386 +/usr/bin/uname -p = unknown /bin/uname -X = unknown -/bin/arch = unknown +/bin/arch = x86_64 /usr/bin/arch -k = unknown /usr/convex/getsysinfo = unknown /usr/bin/hostinfo = unknown @@ -27,21 +27,22 @@ uname -v = FreeBSD 7.0-BETA2 #0: Thu Nov 8 22:33:42 EET 2007 root@joghurt.l /usr/bin/oslevel = unknown /bin/universe = unknown -PATH: /home/buetow/bin +PATH: /home/paul/.pi/agent/bin +PATH: /home/paul/.krew/bin +PATH: /home/linuxbrew/.linuxbrew/bin +PATH: /home/linuxbrew/.linuxbrew/sbin +PATH: /home/paul/bin +PATH: /home/paul/scripts +PATH: /home/paul/go/bin +PATH: /home/paul/.cargo/bin +PATH: /home/paul/.local/bin +PATH: /home/paul/.krew/bin +PATH: /home/paul/.krew/bin +PATH: /usr/local/sbin PATH: /usr/local/bin -PATH: /usr/bin -PATH: /usr/pkg/bin -PATH: /sbin PATH: /usr/sbin -PATH: /usr/local/sbin -PATH: /usr/pkg/sbin -PATH: /bin -PATH: /usr/X11R6/bin -PATH: /usr/scripts -PATH: /usr/srcs/bin -PATH: /usr/games -PATH: /usr/local/java/bin -PATH: /usr/local/parrot-0.4.0-devel/bin +PATH: /usr/bin +PATH: /var/lib/snapd/snap/bin ## ----------- ## @@ -53,21 +54,28 @@ configure:1765: found /usr/bin/g++ configure:1776: result: g++ configure:1807: checking for C++ compiler version configure:1814: g++ --version >&5 -g++ (GCC) 4.2.1 20070719 [FreeBSD] -Copyright (C) 2007 Free Software Foundation, Inc. +g++ (GCC) 16.1.1 20260515 (Red Hat 16.1.1-2) +Copyright (C) 2026 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:1817: $? = 0 configure:1824: g++ -v >&5 Using built-in specs. -Target: i386-undermydesk-freebsd -Configured with: FreeBSD/i386 system compiler +COLLECT_GCC=g++ +COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/16/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-redhat-linux +Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,cobol,algol68,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugzilla.redhat.com/ --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-16.1.1-build/gcc-16.1.1-20260515/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none,amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-tls=gnu2 --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1 --disable-libssp Thread model: posix -gcc version 4.2.1 20070719 [FreeBSD] +Supported LTO compression algorithms: zlib zstd +gcc version 16.1.1 20260515 (Red Hat 16.1.1-2) (GCC) configure:1827: $? = 0 configure:1834: g++ -V >&5 -g++: '-V' option must have argument +g++: error: unrecognized command-line option '-V' +g++: fatal error: no input files +compilation terminated. configure:1837: $? = 1 configure:1860: checking for C++ compiler default output file name configure:1887: g++ conftest.cpp >&5 @@ -95,45 +103,59 @@ configure:2140: checking whether g++ accepts -g configure:2170: g++ -c -g conftest.cpp >&5 configure:2176: $? = 0 configure:2275: result: yes -configure:2379: checking for gcc -configure:2395: found /usr/bin/gcc -configure:2406: result: gcc -configure:2644: checking for C compiler version -configure:2651: gcc --version >&5 -gcc (GCC) 4.2.1 20070719 [FreeBSD] -Copyright (C) 2007 Free Software Foundation, Inc. +configure:2380: checking for gcc +configure:2396: found /usr/bin/gcc +configure:2407: result: gcc +configure:2645: checking for C compiler version +configure:2652: gcc --version >&5 +gcc (GCC) 16.1.1 20260515 (Red Hat 16.1.1-2) +Copyright (C) 2026 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -configure:2654: $? = 0 -configure:2661: gcc -v >&5 +configure:2655: $? = 0 +configure:2662: gcc -v >&5 Using built-in specs. -Target: i386-undermydesk-freebsd -Configured with: FreeBSD/i386 system compiler +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/16/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-redhat-linux +Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,cobol,algol68,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugzilla.redhat.com/ --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-16.1.1-build/gcc-16.1.1-20260515/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none,amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-tls=gnu2 --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1 --disable-libssp Thread model: posix -gcc version 4.2.1 20070719 [FreeBSD] -configure:2664: $? = 0 -configure:2671: gcc -V >&5 -gcc: '-V' option must have argument -configure:2674: $? = 1 -configure:2677: checking whether we are using the GNU C compiler -configure:2706: gcc -c conftest.c >&5 -configure:2712: $? = 0 -configure:2729: result: yes -configure:2734: checking whether gcc accepts -g -configure:2764: gcc -c -g conftest.c >&5 -configure:2770: $? = 0 -configure:2869: result: yes -configure:2886: checking for gcc option to accept ISO C89 -configure:2960: gcc -c -g -O2 conftest.c >&5 -configure:2966: $? = 0 -configure:2989: result: none needed -configure:3013: checking how to run the C preprocessor -configure:3053: gcc -E conftest.c -configure:3059: $? = 0 -configure:3090: gcc -E conftest.c -conftest.c:8:28: error: ac_nonexistent.h: No such file or directory -configure:3096: $? = 1 +Supported LTO compression algorithms: zlib zstd +gcc version 16.1.1 20260515 (Red Hat 16.1.1-2) (GCC) +configure:2665: $? = 0 +configure:2672: gcc -V >&5 +gcc: error: unrecognized command-line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:2675: $? = 1 +configure:2678: checking whether we are using the GNU C compiler +configure:2707: gcc -c conftest.c >&5 +configure:2713: $? = 0 +configure:2730: result: yes +configure:2735: checking whether gcc accepts -g +configure:2765: gcc -c -g conftest.c >&5 +configure:2771: $? = 0 +configure:2870: result: yes +configure:2887: checking for gcc option to accept ISO C89 +configure:2961: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'e': +conftest.c:15:14: warning: old-style function definition [-Wold-style-definition] + 15 | static char *e (p, i) + | ^ +configure:2967: $? = 0 +configure:2990: result: none needed +configure:3014: checking how to run the C preprocessor +configure:3054: gcc -E conftest.c +configure:3060: $? = 0 +configure:3091: gcc -E conftest.c +conftest.c:8:10: fatal error: ac_nonexistent.h: No such file or directory + 8 | #include <ac_nonexistent.h> + | ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:3097: $? = 1 configure: failed program was: | /* confdefs.h. */ | #define PACKAGE_NAME "" @@ -143,12 +165,15 @@ configure: failed program was: | #define PACKAGE_BUGREPORT "" | /* end confdefs.h. */ | #include <ac_nonexistent.h> -configure:3129: result: gcc -E -configure:3158: gcc -E conftest.c -configure:3164: $? = 0 -configure:3195: gcc -E conftest.c -conftest.c:8:28: error: ac_nonexistent.h: No such file or directory -configure:3201: $? = 1 +configure:3130: result: gcc -E +configure:3159: gcc -E conftest.c +configure:3165: $? = 0 +configure:3196: gcc -E conftest.c +conftest.c:8:10: fatal error: ac_nonexistent.h: No such file or directory + 8 | #include <ac_nonexistent.h> + | ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:3202: $? = 1 configure: failed program was: | /* confdefs.h. */ | #define PACKAGE_NAME "" @@ -158,186 +183,156 @@ configure: failed program was: | #define PACKAGE_BUGREPORT "" | /* end confdefs.h. */ | #include <ac_nonexistent.h> -configure:3239: checking for grep that handles long lines and -e -configure:3313: result: /usr/bin/grep -configure:3318: checking for egrep -configure:3396: result: /usr/bin/grep -E -configure:3401: checking for ANSI C header files -configure:3431: gcc -c -g -O2 conftest.c >&5 -configure:3437: $? = 0 -configure:3536: gcc -o conftest -g -O2 conftest.c >&5 -configure:3539: $? = 0 -configure:3545: ./conftest -configure:3548: $? = 0 -configure:3565: result: yes -configure:3589: checking for sys/types.h -configure:3610: gcc -c -g -O2 conftest.c >&5 -configure:3616: $? = 0 -configure:3632: result: yes -configure:3589: checking for sys/stat.h -configure:3610: gcc -c -g -O2 conftest.c >&5 -configure:3616: $? = 0 -configure:3632: result: yes -configure:3589: checking for stdlib.h -configure:3610: gcc -c -g -O2 conftest.c >&5 -configure:3616: $? = 0 -configure:3632: result: yes -configure:3589: checking for string.h -configure:3610: gcc -c -g -O2 conftest.c >&5 -configure:3616: $? = 0 -configure:3632: result: yes -configure:3589: checking for memory.h -configure:3610: gcc -c -g -O2 conftest.c >&5 -configure:3616: $? = 0 -configure:3632: result: yes -configure:3589: checking for strings.h -configure:3610: gcc -c -g -O2 conftest.c >&5 -configure:3616: $? = 0 -configure:3632: result: yes -configure:3589: checking for inttypes.h -configure:3610: gcc -c -g -O2 conftest.c >&5 -configure:3616: $? = 0 -configure:3632: result: yes -configure:3589: checking for stdint.h -configure:3610: gcc -c -g -O2 conftest.c >&5 -configure:3616: $? = 0 -configure:3632: result: yes -configure:3589: checking for unistd.h -configure:3610: gcc -c -g -O2 conftest.c >&5 -configure:3616: $? = 0 -configure:3632: result: yes -configure:3663: checking dlfcn.h usability -configure:3680: gcc -c -g -O2 conftest.c >&5 -configure:3686: $? = 0 -configure:3700: result: yes -configure:3704: checking dlfcn.h presence -configure:3719: gcc -E conftest.c -configure:3725: $? = 0 -configure:3739: result: yes -configure:3767: checking for dlfcn.h -configure:3775: result: yes -configure:3663: checking netinet/in.h usability -configure:3680: gcc -c -g -O2 conftest.c >&5 -configure:3686: $? = 0 -configure:3700: result: yes -configure:3704: checking netinet/in.h presence -configure:3719: gcc -E conftest.c -configure:3725: $? = 0 -configure:3739: result: yes -configure:3767: checking for netinet/in.h -configure:3775: result: yes -configure:3663: checking time.h usability -configure:3680: gcc -c -g -O2 conftest.c >&5 -configure:3686: $? = 0 -configure:3700: result: yes -configure:3704: checking time.h presence -configure:3719: gcc -E conftest.c -configure:3725: $? = 0 -configure:3739: result: yes -configure:3767: checking for time.h -configure:3775: result: yes -configure:3663: checking pthread.h usability -configure:3680: gcc -c -g -O2 conftest.c >&5 -configure:3686: $? = 0 -configure:3700: result: yes -configure:3704: checking pthread.h presence -configure:3719: gcc -E conftest.c -configure:3725: $? = 0 -configure:3739: result: yes -configure:3767: checking for pthread.h -configure:3775: result: yes -configure:3663: checking event.h usability -configure:3680: gcc -c -g -O2 conftest.c >&5 -conftest.c:55:19: error: event.h: No such file or directory -configure:3686: $? = 1 -configure: failed program was: -| /* confdefs.h. */ -| #define PACKAGE_NAME "" -| #define PACKAGE_TARNAME "" -| #define PACKAGE_VERSION "" -| #define PACKAGE_STRING "" -| #define PACKAGE_BUGREPORT "" -| #define STDC_HEADERS 1 -| #define HAVE_SYS_TYPES_H 1 -| #define HAVE_SYS_STAT_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_MEMORY_H 1 -| #define HAVE_STRINGS_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_UNISTD_H 1 -| #define HAVE_DLFCN_H 1 -| #define HAVE_NETINET_IN_H 1 -| #define HAVE_TIME_H 1 -| #define HAVE_PTHREAD_H 1 -| /* end confdefs.h. */ -| #include <stdio.h> -| #ifdef HAVE_SYS_TYPES_H -| # include <sys/types.h> -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include <sys/stat.h> -| #endif -| #ifdef STDC_HEADERS -| # include <stdlib.h> -| # include <stddef.h> -| #else -| # ifdef HAVE_STDLIB_H -| # include <stdlib.h> -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include <memory.h> -| # endif -| # include <string.h> -| #endif -| #ifdef HAVE_STRINGS_H -| # include <strings.h> -| #endif -| #ifdef HAVE_INTTYPES_H -| # include <inttypes.h> -| #endif -| #ifdef HAVE_STDINT_H -| # include <stdint.h> -| #endif -| #ifdef HAVE_UNISTD_H -| # include <unistd.h> -| #endif -| #include <event.h> -configure:3700: result: no -configure:3704: checking event.h presence -configure:3719: gcc -E conftest.c -conftest.c:22:19: error: event.h: No such file or directory -configure:3725: $? = 1 -configure: failed program was: -| /* confdefs.h. */ -| #define PACKAGE_NAME "" -| #define PACKAGE_TARNAME "" -| #define PACKAGE_VERSION "" -| #define PACKAGE_STRING "" -| #define PACKAGE_BUGREPORT "" -| #define STDC_HEADERS 1 -| #define HAVE_SYS_TYPES_H 1 -| #define HAVE_SYS_STAT_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_MEMORY_H 1 -| #define HAVE_STRINGS_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_UNISTD_H 1 -| #define HAVE_DLFCN_H 1 -| #define HAVE_NETINET_IN_H 1 -| #define HAVE_TIME_H 1 -| #define HAVE_PTHREAD_H 1 -| /* end confdefs.h. */ -| #include <event.h> -configure:3739: result: no -configure:3767: checking for event.h -configure:3775: result: no -configure:2323: error: Could not find required header, please check the installation of the required header +configure:3240: checking for grep that handles long lines and -e +configure:3314: result: /usr/bin/grep +configure:3319: checking for egrep +configure:3397: result: /usr/bin/grep -E +configure:3402: checking for ANSI C header files +configure:3432: gcc -c -g -O2 conftest.c >&5 +configure:3438: $? = 0 +configure:3537: gcc -o conftest -g -O2 conftest.c >&5 +configure:3540: $? = 0 +configure:3546: ./conftest +configure:3549: $? = 0 +configure:3566: result: yes +configure:3590: checking for sys/types.h +configure:3611: gcc -c -g -O2 conftest.c >&5 +configure:3617: $? = 0 +configure:3633: result: yes +configure:3590: checking for sys/stat.h +configure:3611: gcc -c -g -O2 conftest.c >&5 +configure:3617: $? = 0 +configure:3633: result: yes +configure:3590: checking for stdlib.h +configure:3611: gcc -c -g -O2 conftest.c >&5 +configure:3617: $? = 0 +configure:3633: result: yes +configure:3590: checking for string.h +configure:3611: gcc -c -g -O2 conftest.c >&5 +configure:3617: $? = 0 +configure:3633: result: yes +configure:3590: checking for memory.h +configure:3611: gcc -c -g -O2 conftest.c >&5 +configure:3617: $? = 0 +configure:3633: result: yes +configure:3590: checking for strings.h +configure:3611: gcc -c -g -O2 conftest.c >&5 +configure:3617: $? = 0 +configure:3633: result: yes +configure:3590: checking for inttypes.h +configure:3611: gcc -c -g -O2 conftest.c >&5 +configure:3617: $? = 0 +configure:3633: result: yes +configure:3590: checking for stdint.h +configure:3611: gcc -c -g -O2 conftest.c >&5 +configure:3617: $? = 0 +configure:3633: result: yes +configure:3590: checking for unistd.h +configure:3611: gcc -c -g -O2 conftest.c >&5 +configure:3617: $? = 0 +configure:3633: result: yes +configure:3664: checking dlfcn.h usability +configure:3681: gcc -c -g -O2 conftest.c >&5 +configure:3687: $? = 0 +configure:3701: result: yes +configure:3705: checking dlfcn.h presence +configure:3720: gcc -E conftest.c +configure:3726: $? = 0 +configure:3740: result: yes +configure:3768: checking for dlfcn.h +configure:3776: result: yes +configure:3664: checking netinet/in.h usability +configure:3681: gcc -c -g -O2 conftest.c >&5 +configure:3687: $? = 0 +configure:3701: result: yes +configure:3705: checking netinet/in.h presence +configure:3720: gcc -E conftest.c +configure:3726: $? = 0 +configure:3740: result: yes +configure:3768: checking for netinet/in.h +configure:3776: result: yes +configure:3664: checking time.h usability +configure:3681: gcc -c -g -O2 conftest.c >&5 +configure:3687: $? = 0 +configure:3701: result: yes +configure:3705: checking time.h presence +configure:3720: gcc -E conftest.c +configure:3726: $? = 0 +configure:3740: result: yes +configure:3768: checking for time.h +configure:3776: result: yes +configure:3664: checking pthread.h usability +configure:3681: gcc -c -g -O2 conftest.c >&5 +configure:3687: $? = 0 +configure:3701: result: yes +configure:3705: checking pthread.h presence +configure:3720: gcc -E conftest.c +configure:3726: $? = 0 +configure:3740: result: yes +configure:3768: checking for pthread.h +configure:3776: result: yes +configure:3664: checking event.h usability +configure:3681: gcc -c -g -O2 conftest.c >&5 +configure:3687: $? = 0 +configure:3701: result: yes +configure:3705: checking event.h presence +configure:3720: gcc -E conftest.c +configure:3726: $? = 0 +configure:3740: result: yes +configure:3768: checking for event.h +configure:3776: result: yes +configure:3792: checking for pthread_create in -lpthread +configure:3827: gcc -o conftest -g -O2 conftest.c -lpthread >&5 +configure:3833: $? = 0 +configure:3851: result: yes +configure:3865: checking for event_init in -levent +configure:3900: gcc -o conftest -g -O2 conftest.c -levent -lpthread >&5 +configure:3906: $? = 0 +configure:3924: result: yes +configure:4616: checking for dlopen in -ldl +configure:4651: gcc -o conftest -g -O2 conftest.c -ldl -levent -lpthread >&5 +configure:4657: $? = 0 +configure:4675: result: yes +configure:4793: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by config.status, which was +generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on earth + +config.status:595: creating Makefile +config.status:595: creating config.h +configure:5889: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by config.status, which was +generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on earth + +config.status:596: creating Makefile +config.status:596: creating ../Makefile +config.status:596: creating config.h +config.status:817: config.h is unchanged ## ---------------- ## ## Cache variables. ## @@ -370,7 +365,7 @@ ac_cv_env_host_alias_value= ac_cv_env_target_alias_set= ac_cv_env_target_alias_value= ac_cv_header_dlfcn_h=yes -ac_cv_header_event_h=no +ac_cv_header_event_h=yes ac_cv_header_inttypes_h=yes ac_cv_header_memory_h=yes ac_cv_header_netinet_in_h=yes @@ -384,6 +379,9 @@ ac_cv_header_sys_stat_h=yes ac_cv_header_sys_types_h=yes ac_cv_header_time_h=yes ac_cv_header_unistd_h=yes +ac_cv_lib_dl_dlopen=yes +ac_cv_lib_event_event_init=yes +ac_cv_lib_pthread_pthread_create=yes ac_cv_objext=o ac_cv |
