Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 937565 - games-strategy/freeciv-3.1.0: incompatible packet contents
Summary: games-strategy/freeciv-3.1.0: incompatible packet contents
Status: CONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: AMD64 Linux
: Normal major
Assignee: Gentoo Games
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-08-08 09:17 UTC by Johannes Geiss
Modified: 2025-04-16 05:52 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Johannes Geiss 2024-08-08 09:17:51 UTC
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
Comment 1 Matt Jolly gentoo-dev 2025-04-03 05:41:12 UTC
Can't reproduce on 3.1.4 - Are you able to check for me if this still occurs?
Comment 2 Johannes Geiss 2025-04-05 09:16:11 UTC
(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
Comment 3 Johannes Geiss 2025-04-05 09:20:23 UTC
My steps above used version 3.1.3.
Comment 4 Johannes Geiss 2025-04-05 09:33:20 UTC
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
Comment 5 rick vernam 2025-04-14 00:42:10 UTC
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...
Comment 6 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2025-04-14 00:47:34 UTC
(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.
Comment 7 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2025-04-14 00:51:09 UTC
.. 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?
Comment 8 rick vernam 2025-04-14 01:03:06 UTC
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...
Comment 9 Matt Jolly gentoo-dev 2025-04-16 05:28:52 UTC

> 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!
Comment 10 Larry the Git Cow gentoo-dev 2025-04-16 05:52:45 UTC
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(+)