Page MenuHomeFeedback Tracker

Linux DayZ Server Experimental 1.14.154166 - Server refuses to load PBO files with uppercase letters in their names
Closed, ResolvedPublic

Description

The Linux experimental version of DayZ Server appears to refuse to load PBO files when their paths/filenames contain uppercase letters. For example, the CF (aka "Community Framework") mod, which is very commonly used, contains PBO directories and files with capital letters in their names. When I try to load this mod on a Linux server:

$ strace -o trace.txt ./DayZServer -config=serverDZ.cfg -profile=/home/steam/dayz/profile -mod=@CF

The resulting trace shows the server trying to read directories but not trying to read PBO files:

$ grep "openat.*@CF" trace.txt 
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/dta", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/mpmissions", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 132
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/Addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 133

Just making the directory names lowercase (i.e. renaming "Addons" to "addons") does not appear to be enough because just changing the directory names causes the server to print an error to the console:

$ strace -o trace.txt ./DayZServer -config=serverDZ.cfg -profile=/home/steam/dayz/profile -mod=@CF
Cannot open file '/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF\addons\gui'

However, if I make the directory names lowercase and I make the PBO filenames (and their associated *.bisign filenames) lowercase, it appears as though the server is loading the mod successfully:

$ grep "openat.*@CF" trace.txt 
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/dta", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 17
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 18
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 19
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 20
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 21
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 22
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/mpmissions", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 137
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 138
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons/defines.pbo", O_RDONLY) = 137
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons/scripts.pbo", O_RDONLY) = 137
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons/legacy.pbo", O_RDONLY) = 137
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons/xml.pbo", O_RDONLY) = 137
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons/gui.pbo", O_RDONLY) = 137
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5
openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5

Is this expected behavior? It appears to be pretty common for mods to contain mixed case "Addons" directories and mixed case PBO filenames, so it will be pretty disruptive to require mod authors to republish to fix this issue.

Details

Severity
Minor
Resolution
Won't Fix
Reproducibility
Always
Operating System
Linux x64
Operating System Version
Ubuntu 20.04
Category
Modding
Steps To Reproduce

See description.

Due to T160665, the only way I've found to debug this issue is using the Linux strace command, which tracks and logs system calls in a running process. This command allows me to see what files and directories DayZ Server tries to read or write when it runs.

Note that this issue also made T160729 difficult to pin down.

Additional Information

Windows filesystem is case insensitive but Linux filesystems are usually case sensitive so I recognize that supporting both environments poses a challenge when dealing with filenames. However, it would be nice if Linux servers could support loading mods regardless of the capitalization of their files and directories.

Event Timeline

tjensen created this task.Sat, Sep 11, 11:25 PM
dedmen closed this task as Resolved.Tue, Sep 14, 2:20 PM
dedmen claimed this task.
dedmen added a subscriber: dedmen.

Thats intentional.
Same as with Arma 3 on linux, all pbo's need to be lowercase.

Won't fix.

dedmen changed Resolution from Open to Won't Fix.Tue, Sep 14, 2:20 PM