Page 1 of 1

[0.15.2] Linux headless requiring full filename

Posted: Wed Apr 26, 2017 3:11 pm
by UncleDrax
Attempting to start the Linux headless server (Debian Jesse 8.7) appears to require explicitly appending of the ".zip" extension. Otherwise results in error and hangs.

Work around is trivial, and to just always include the full filename.

Additional info from IRC:

Code: Select all

@HanziQ> UncleDrax minizip returns UNZ_OK but fails to open file
@HanziQ> UncleDrax cannot reproduce, both work for me
@HanziQ> if you happen to reproduce it, I would like to see a bugreport
Failure Case:

Code: Select all

auntieentity:~$  ./factorio/bin/x64/factorio --start-server FactoryByNightOps
   0.000 2017-04-26 10:25:02; Factorio 0.15.2 (build 29124, linux64, headless)
   0.000 Operating system: Linux
   0.000 Program arguments: "./factorio/bin/x64/factorio" "--start-server" "FactoryByNightOps" 
   0.000 Read data path: /home/user/factorio/data
   0.000 Write data path: /home/user/factorio
   0.000 Binaries path: /home/user/factorio/bin
   0.011 System info: [CPU: Intel(R) Xeon(R) CPU           L5520  @ 2.27GHz, 2 cores, RAM: 3965MB]
   0.011 Running in headless mode
   0.018 Loading mod core 0.0.0 (data.lua)
   0.025 Loading mod base 0.15.2 (data.lua)
   0.163 Loading mod base 0.15.2 (data-updates.lua)
   0.281 Checksum for core: 530912544
   0.281 Checksum of base: 83206502
   0.454 Info PlayerData.cpp:55: Local player-data.json available, timestamp 1493216625
   0.455 Info PlayerData.cpp:62: Cloud player-data.json unavailable
   0.456 Custom inputs active: 0
   0.457 Info Updater.cpp:743: Downloading https://updater.factorio.com/get-available-versions?username=xxxxxxxxxxxx&token=<private>&apiVersion=2
   0.958 0 packages available to download (experimental updates disabled).
   0.961 Factorio initialised
   0.961 Info ServerSynchronizer.cpp:27: nextHeartbeatSequenceNumber(0) initialized Synchronizer nextTickClosureTick(0).
   0.962 Info ServerMultiplayerManager.cpp:663: mapTick(-1) changing state from(Ready) to(PreparedToHostGame)
   0.962 Info ServerMultiplayerManager.cpp:663: mapTick(-1) changing state from(PreparedToHostGame) to(CreatingGame)
   0.962 Loading map /home/username/FactoryByNightOps
   0.962 Error ServerMultiplayerManager.cpp:93: MultiplayerManager failed: "Opening zip /home/username/FactoryByNightOps failed: Ok"
   0.962 Info ServerMultiplayerManager.cpp:663: mapTick(-1) changing state from(CreatingGame) to(InitializationFailed)

^C 128.932 Received SIGINT, shutting down
^C
auntieentity:~$
Additionally tested with all lowercase filename to just isolate camel-case as a contributor. Same result


Works fine with full filename:

Code: Select all


auntieentity:~$ ./factorio/bin/x64/factorio --start-server FactoryByNightOps.zip
   0.000 2017-04-26 10:23:41; Factorio 0.15.2 (build 29124, linux64, headless)
   0.000 Operating system: Linux
   0.000 Program arguments: "./factorio/bin/x64/factorio" "--start-server" "FactoryByNightOps.zip" 
   0.000 Read data path: /home/username/factorio/data
   0.000 Write data path: /home/username/factorio
   0.000 Binaries path: /home/username/factorio/bin
   0.011 System info: [CPU: Intel(R) Xeon(R) CPU           L5520  @ 2.27GHz, 2 cores, RAM: 3965MB]
...
 0.849 Loading map /home/username/FactoryByNightOps.zip: 3282980 bytes.
   0.850 Error FileUtil.cpp:291: Can't remove /home/username/factorio/temp/currently-playing: No such file or directory
   0.863 Loading Level.dat: 6537292 bytes.
   0.868 Info Scenario.cpp:133: Map version 0.15.2-0
   1.138 Loading script.dat: 190 bytes.
   1.140 Checksum for script /home/username/factorio/temp/currently-playing/control.lua: 2433440189
   1.143 Info UDPSocket.cpp:27: Opening socket at (0.0.0.0:34197)
   1.143 Hosting game at 0.0.0.0:34197
...
Supplemental Environment Information

Code: Select all

auntieentity ~]$uname -a
Linux auntieentity 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux
auntieentity ~]$cat /etc/debian_version 
8.7

Re: [0.15.2] Linux headless requiring full filename

Posted: Tue May 02, 2017 2:15 pm
by HanziQ
I think the full filename behaviour is correct, it will now give proper "file doesn't exist" error message.

Re: [0.15.2] Linux headless requiring full filename

Posted: Fri May 05, 2017 1:32 pm
by UncleDrax
Confirmed behavior fixed in 0.15.7

Code: Select all

@auntieentity:~$ ./factorio/bin/x64/factorio --start-server FactoryByNightOps --server-settings factorio-server-settings.json 
   0.000 2017-05-05 09:28:54; Factorio 0.15.7 (build 29468, linux64, headless)
   0.000 Operating system: Linux
   0.000 Program arguments: "./factorio/bin/x64/factorio" "--start-server" "FactoryByNightOps" "--server-settings" "factorio-server-settings.json" 
  ...
   1.118 Warning FileUtil.cpp:417: FactoryByNightOps not found; using FactoryByNightOps.zip
   1.118 Info ServerSynchronizer.cpp:27: nextHeartbeatSequenceNumber(0) initialized Synchronizer nextTickClosureTick(0).
   1.118 Info ServerMultiplayerManager.cpp:663: mapTick(-1) changing state from(Ready) to(PreparedToHostGame)
   1.118 Info ServerMultiplayerManager.cpp:663: mapTick(-1) changing state from(PreparedToHostGame) to(CreatingGame)
   1.118 Loading map /home/username/FactoryByNightOps.zip: 6945882 bytes.
   1.120 Error FileUtil.cpp:291: Can't remove /home/uername/factorio/temp/currently-playing: No such file or directory
   1.136 Loading Level.dat: 16311596 bytes.
   1.143 Info Scenario.cpp:133: Map version 0.15.7-2
   1.760 Loading script.dat: 190 bytes.
...