Starting a new game fails. Reproducible: Always Steps to Reproduce: 1. Start freeciv-gtk3.22 2. Hit button "Start New Game" Actual Results: GUI shows line "Lost connection to server (incompatible packet contents)!" and console prints 1: ERROR: Unable to get uint8 from location: global_advances 1: Lost connection to server: incompatible packet contents. Same error occurs at "Start Scenario Game" or "Load Saved Game". Expected Results: Game starts with a new generated world. Portage 3.0.65 (python 3.12.3-final-0, default/linux/amd64/23.0/desktop/systemd, gcc-13, glibc-2.39-r6, 6.6.38-gentoo-mizar x86_64) ================================================================= System uname: Linux-6.6.38-gentoo-mizar-x86_64-Intel-R-_Core-TM-_i7-3615QM_CPU_@_2.30GHz-with-glibc2.39 KiB Mem: 16304048 total, 8620000 free KiB Swap: 33554424 total, 32780084 free Timestamp of repository gentoo: Mon, 05 Aug 2024 07:15:00 +0000 Head commit of repository gentoo: 91424214b802f5118a599a98d416a41ed792df06 sh bash 5.2_p26-r6 ld GNU ld (Gentoo 2.42 p3) 2.42.0 distcc 3.4 x86_64-pc-linux-gnu [enabled] app-misc/pax-utils: 1.3.7::gentoo app-shells/bash: 5.2_p26-r6::gentoo dev-build/autoconf: 2.13-r8::gentoo, 2.71-r7::gentoo dev-build/automake: 1.16.5-r2::gentoo dev-build/cmake: 3.28.5::gentoo dev-build/libtool: 2.4.7-r4::gentoo dev-build/make: 4.4.1-r1::gentoo dev-build/meson: 1.4.1::gentoo dev-java/java-config: 2.3.4::gentoo dev-lang/perl: 5.38.2-r3::gentoo dev-lang/python: 3.11.9-r1::gentoo, 3.12.3-r1::gentoo dev-lang/rust: 1.79.0::gentoo sys-apps/baselayout: 2.15::gentoo sys-apps/sandbox: 2.38::gentoo sys-apps/systemd: 255.7-r1::gentoo sys-devel/binutils: 2.42-r1::gentoo sys-devel/binutils-config: 5.5::gentoo sys-devel/clang: 18.1.8::gentoo sys-devel/gcc: 13.3.1_p20240614::gentoo sys-devel/gcc-config: 2.11::gentoo sys-devel/lld: 18.1.8::gentoo sys-devel/llvm: 18.1.8-r1::gentoo sys-kernel/linux-headers: 6.6-r1::gentoo (virtual/os-headers) sys-libs/glibc: 2.39-r6::gentoo Repositories: private-overlay location: /var/db/repos/private-overlay masters: gentoo priority: 10 volatile: False gentoo location: /var/db/repos/gentoo sync-type: rsync sync-uri: rsync://mirror.eu.oneandone.net/gentoo-portage priority: 20 volatile: False sync-rsync-verify-jobs: 1 sync-rsync-extra-opts: sync-rsync-verify-metamanifest: yes sync-rsync-verify-max-age: 24 Binary Repositories: merope priority: 5 sync-uri: rsync://merope/binpkgs/x86_64-pc-linux-gnu ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="@FREE" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -pipe -fno-stack-protector" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-O2 -pipe -fno-stack-protector" DISTDIR="/var/cache/portage/distfiles" EMERGE_DEFAULT_OPTS="--alphabetical --nospinner --quiet-build --usepkg=y --binpkg-respect-use=y --verbose-conflicts --getbinpkg=y" ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME" FCFLAGS="-O2 -pipe -fno-stack-protector" FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg buildpkg-live clean-logs config-protect-if-modified distcc distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync merge-wait multilib-strict network-sandbox news parallel-fetch pid-sandbox pkgdir-index-trusted protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" FFLAGS="-O2 -pipe -fno-stack-protector" GENTOO_MIRRORS="rsync://merope/distfiles http://ftp.fau.de/gentoo http://mirror.eu.oneandone.net/linux/distributions/gentoo/gentoo/ " INSTALL_MASK=" /usr/share/rocksndiamonds/levels" LANG="en_US.utf8" LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs" LEX="flex" LINGUAS="en de" MAKEOPTS="-j12" PKGDIR="/var/cache/portage/binpkgs/x86_64-pc-linux-gnu" PORTAGE_COMPRESS="" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git" PORTAGE_TMPDIR="/var/tmp" SHELL="/bin/bash" USE="X a52 aac aacs acl acpi alsa amd64 apng bluetooth bluray boost branding brotli btrfs bzip2 cairo calendar cdda cdr cet cjk collada compositor context crypt cryptsetup css cups curl cycles dbus declarative designer device-mapper dri drm dts dvd dvdr egl emacs encode exif expat extras fdk ffmpeg fftw flac fontconfig fuse gbm gd gdbm gif gimp gles2 glew gmp gphoto2 gpm graphics gtk gtk3 gui harfbuzz iconv icu id3tag idn imagemagick imap importd infinality ipv6 java jemalloc joystick jpeg jpeg2k json kernel-install kf6compat kpathsea latex lcms lha libass libnotify libtirpc libxml2 llvm lto lvm lzma mad man midi mikmod minizip mng mod mp3 mp4 mpeg mtp multicall multilib ncurses network nfs nfsv3 nfsv4 nls nss ntfsprogs objc odbc ogg openexr opengl openimageio openmp opus pam pango parallel-compiler pcre pcre32 pdf png policykit postproc postscript ppds printsupport pstricks pulseaudio python qmax qml qt5 readline rpc rss sasl savedconfig science scripts scripttools sdl seccomp secure-delete server sid sieve sndfile sound spell spice sql sqlite srt ssl startup-notification static-user svg system-bootstrap system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-llvm system-png systemd taglib test-rust tftp theora thin threads tiff timidity truetype twolame udev udisks unicode upnp upower usb vamp videos vnc vorbis vpx vulkan warmstarts wayland webchannel webkit webp widgets winbind wxwidgets x264 xattr xcb xetex xface xft xml xpm xtables xv xvid zip zlib" ABI_X86="64" ADA_TARGET="gcc_12" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_anon authn_dbm authn_file authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 ntrip navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" INPUT_DEVICES="libinput" KERNEL="linux" L10N="en en-US de de-DE" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LLVM_TARGETS="X86 ARM" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-2" POSTGRES_TARGETS="postgres15" PYTHON_SINGLE_TARGET="python3_12" PYTHON_TARGETS="python3_12" QEMU_SOFTMMU_TARGETS="x86_64" QEMU_USER_TARGETS="arm ppc" RUBY_TARGETS="ruby31 ruby32" SANE_BACKENDS="genesys" VIDEO_CARDS="intel" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account" Unset: ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, LC_ALL, LD, LFLAGS, LIBTOOL, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PYTHONPATH, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS
Can't reproduce on 3.1.4 - Are you able to check for me if this still occurs?
(In reply to Matt Jolly from comment #1) > Can't reproduce on 3.1.4 - Are you able to check for me if this still occurs? I dug deeper in the problem. It seems to be a problem with the GTK variant. You can reproduce it as follows in Podman (or Docker): podman run -ti -e DISPLAY -v ~/.Xauthority:/root/.Xauthority:Z --net=host docker.io/gentoo/stage3 emerge-webrsync emerge gentoolkit euse -E X vorbis gtk3 json euse -D qt6 emerge freeciv useradd user cp /root/.Xauthority /home/user/. chmod 0666 /home/user/.Xauthority su -l --whitelist-environment DISPLAY user freeciv-gtk3.22 Select "Start New Game" => Lost connection to server: incompatible packet contents
My steps above used version 3.1.3.
I just updated to version 3.1.4, but the error is still there: echo >/etc/portage/package.accept_keywords/freeciv games-strategy/freeciv ~amd64 emerge -u freeciv su -l --whitelist-environment DISPLAY user freeciv-gtk3.22 Select "Start New Game" => Lost connection to server: incompatible packet contents
I started experiencing this as well on v3.1.4. Rebuilding with -json fixed things for me...no clue what the json use flag does for freeciv...
(In reply to rick vernam from comment #5) > I started experiencing this as well on v3.1.4. > Rebuilding with -json fixed things for me...no clue what the json use flag > does for freeciv... Interesting! USE=json controls the -Djson-protocol meson option (which uses dev-libs/jansson). https://forum.freeciv.org/f/viewtopic.php?p=81130#p81130 suggests to me that perhaps the JSON protocol is for the website mode (and interacting with those users) and that this is semi-intentional? Maybe? If that's right (and I don't know if it is, I defer to the maintainer), we should probably mask USE=json or at least add some pkg_postinst warn when it's enabled.
.. though https://github.com/freeciv/freeciv/commit/40b53efb124bf8481f453868f9d3478ff05e6b42 and https://github.com/freeciv/freeciv/commit/d1fb43d496ff08cd5a3eafa43f5f06d0f370fa97 (which didn't get dropped later) imply it is runtime switchable?
I can't comment on the other things you have highlighted...however, I should add that prior to upgrading to v3.1.4 I did not have the json flag on and never encountered this. So very strong anecdotal evidence, if nothing more...
> You can already compile freeciv (including client part) to use json network protocol instead of the protocol regular server/client use. Interesting; this suggests that it _should_ work if if json-protocol is enabled... and my testing (on 9999 and 3.2.0) suggests that it does. I am able to successfully communicate with a (local) server and client built by portage and have successfully played a few turns. Unfortunately, as suggested by this bug it's actually broken for 3.1.x, and with that info I can successfully reproduce the issue. I'll p.use.mask it for the older versions since this seems to be fixed for 3.2.0. I can't easily identify the change that fixed this behaviour - if someone wants to bisect I'm happy to backport, but since 3.2.0 will be out in a few months (and the beta is now packaged) I'm happy to leave it at that. Please feel free to try the later versions (with the json USE) and let me know how that goes!
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1c3ccff414a33b1dd288ba40f9fe21274d973ce9 commit 1c3ccff414a33b1dd288ba40f9fe21274d973ce9 Author: Matt Jolly <kangie@gentoo.org> AuthorDate: 2025-04-16 05:39:01 +0000 Commit: Matt Jolly <kangie@gentoo.org> CommitDate: 2025-04-16 05:52:32 +0000 profiles/base: p.use.mask games-strategy/freeciv[json] < 3.2.0 Released versions of freeciv will build a client and server that are incapable of communicating with each other. This is fixed upstream, but a non-obvious backport. Since a fixed beta is packaged already (and the JSON protocol is not in wide use) we'll mask the USE for now. Bug: https://bugs.gentoo.org/937565 Signed-off-by: Matt Jolly <kangie@gentoo.org> profiles/base/package.use.mask | 6 ++++++ 1 file changed, 6 insertions(+)