News:

Want to praise Simutrans?
Your feedback is important for us ;D.

simutrans experimental server

Started by Vladki, June 20, 2016, 09:09:38 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Vladki

Hi, splitting from the signalling discussion. I have compiled the server, with config.default:


BACKEND = posix
COLOUR_DEPTH = 16
OSTYPE = linux


Compilation went OK, but when I try to start the server I get:
./simutrans-experimental -server -objects pak128.Britain-Ex/  -debug
....
Reading speedbonus configuration ...
Reading private car ownership configuration ...
Reading electricity consumption configuration ...
Reading menu configuration ...
Warning: create_simple_tool():  deprecated tool [27] requested
Reading object data from pak128.Britain-Ex/...
Segmentation fault (core dumped)

strace gives:
write(2, "Reading menu configuration ...", 30Reading menu configuration ...) = 30
write(2, "\n", 1
)                       = 1
write(2, "Warning: create_simple_tool():\t", 31Warning: create_simple_tool():   ) = 31
write(2, "deprecated tool [27] requested", 30deprecated tool [27] requested) = 30
write(2, "\n", 1
)                       = 1
write(2, "Reading object data from pak128."..., 46Reading object data from pak128.Britain-Ex/...) = 46
write(2, "\n", 1
)                       = 1
open("pak128.Britain-Ex/.", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5
fstat(5, {st_mode=S_IFDIR|0775, st_size=221184, ...}) = 0
brk(0x13ff000)                          = 0x13ff000
getdents(5, /* 611 entries */, 32768)   = 32768
getdents(5, /* 613 entries */, 32768)   = 32728
getdents(5, /* 602 entries */, 32768)   = 32760
getdents(5, /* 609 entries */, 32768)   = 32728
brk(0x1420000)                          = 0x1420000
getdents(5, /* 611 entries */, 32768)   = 32736
getdents(5, /* 540 entries */, 32768)   = 28880
getdents(5, /* 0 entries */, 32768)     = 0
close(5)                                = 0
open("pak128.Britain-Ex/ground.Outside.pak", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0664, st_size=192, ...}) = 0
read(5, "Simutrans object file\nCompiled w"..., 4096) = 192
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x14} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)




jamespetts

Hmm - this is not very useful output, and I am not familliar with strace. Can you run it again with gdb and see what output that you get with that?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Vladki

I have got i bit further. The first was indeed broken ground.Outside.pak. Here is a fix for makefile. Apparently some versions of make did a good job, some don't.

diff --git a/Makefile b/Makefile
index e6576d3..e88941d 100644
--- a/Makefile
+++ b/Makefile
@@ -157,7 +157,7 @@ $(OUTSIDE):
        @echo "===> OUTSIDE with REVISION and grounds"
        @mkdir -p $(PAKDIR)
        @$(MAKEOBJ) PAK128 $(PAKDIR)/ $@/ > /dev/null
-       @echo -e -n "Obj=ground\nName=Outside\ncopyright=$(VERSION_STRING)" >$@/outsiderev.dat
+       @echo -e "Obj=ground\nName=Outside\ncopyright=$(VERSION_STRING)" >$@/outsiderev.dat
        #@svnversion >>$@/outsiderev.dat
        @echo -e "Image[0][0]=images/ls-water-outside-128.0.0\n-" >>$@/outsiderev.dat
        @$(MAKEOBJ) PAK128 $(PAKDIR)/ $@/outsiderev.dat > /dev/null


Though still no success, it segfaults at other place (loading the passing-point-test.sve)

Running world, pause=0, fast forward=0 ...
Message: karte_t::reset_timer():        called, mode=$4
Debug: karte_t::interactive:    welcome in this routine
Message: karte_t::reset_timer():        called, mode=$4
Debug: karte_t::interactive:    start the loop
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_ansicht_t::display:        starting ...
Debug: karte_ansicht_t::display:        display pointer
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_ansicht_t::display:        starting ...
Debug: karte_ansicht_t::display:        display pointer
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_ansicht_t::display:        starting ...
Debug: karte_ansicht_t::display:        display pointer
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_ansicht_t::display:        starting ...
Debug: karte_ansicht_t::display:        display pointer
Debug: karte_t::step:   start step
Debug: karte_t::step:   time calculations
Debug: interrupt_check: called from (simworld.cc:4958)
Debug: karte_t::step:   pending_season_change
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4971)
Debug: interrupt_check: called from (simworld.cc:4988)
Debug: interrupt_check: called from (simworld.cc:4993)
Debug: karte_t::step 4: step 3 convois
Debug: interrupt_check: called from (simworld.cc:5001)
Debug: karte_t::step 6: step cities
Debug: karte_t::step:   step factories
Debug: karte_t::step:   step poweline stuff
Debug: karte_t::step:   step players
Debug: karte_t::step:   step halts
Debug: interrupt_check: called from (simworld.cc:5094)
Message: network_command_t::rdwr:       write packet_id=8, client_id=0
Warning: nwc_tool_t::rdwr:      rdwr id=8 client=0 plnr=255 pos=koord3d invalid tool_id=8224 defpar=Now 0 clients connected. init=1 flags=0
Debug: karte_t::step:   end
Debug: karte_t::interactive:    point of loop return
Warning: nwc_tool_t::clone:     send sync_steps=1  tool=8224 init
Message: network_command_t::rdwr:       write packet_id=8, client_id=0
Warning: nwc_tool_t::rdwr:      rdwr id=8 client=0 plnr=255 pos=koord3d invalid tool_id=8224 defpar=Now 0 clients connected. init=1 flags=0
Message: network_world_command_t::execute:      do_command 8 at sync_step 5 world now at 4
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_ansicht_t::display:        starting ...
Debug: karte_ansicht_t::display:        display pointer
Debug: karte_t::interactive:    point of loop return
Message: nwc_tool_t::do_command:        steps 5 tool 8224 init
Message: nwc_tool_t::do_command:        id=32 init=1 defpar=Now 0 clients connected. flag=4
Message: message_t::add_msg():                  Now 0 clients connected. (at -1,-1)
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_ansicht_t::display:        starting ...
Debug: karte_ansicht_t::display:        display pointer
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_t::interactive:    point of loop return
Debug: karte_ansicht_t::display:        starting ...
Debug: karte_ansicht_t::display:        display pointer
Neoprávněný přístup do paměti (SIGSEGV)


I'm not used to gdb, so I did:

gdb --args ./simutrans-server -server -objects pak128.Britain-Ex -lang en -load passing-point-test.sve -debug
(gdb) run
and got the same as above plus:

Program received signal SIGSEGV, Segmentation fault.
__memmove_ssse3_back () at ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:2060
2060    ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: File or directory does not exist.

jamespetts

Thank you for the make fix.

To try to understand the segmentation fault, I need a backtrace from GDB. Are you able to have a go at obtaining one of those?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Vladki

Could you hint me how to get the backtrace? I have not used gdb since school days...

TurfIt

'bt' ? It does always say "Try 'help'" when it's confused...

However, this does have a stench of you running afoul the GCC optimizer, as did I during the recent failed releases of Standard. Are you trying an optimized build targeting newer than a pentium2 using a newish GCC?
First try a non-optimzed build, if that works, then adding -mstackrealign to the compiler flags for the optimized case; Worked to finally get the Standard releases working for those whom it originally crashed.

Vladki

This is my config.server, building on i5, gcc version 4.9.2 (Debian 4.9.2-10), no optimisations unless they are done by default.

BACKEND = posix
COLOUR_DEPTH = 16
OSTYPE = linux
DEBUG = 3
VERBOSE = 1
FLAGS = -fpermissive -fno-delete-null-pointer-checks -fno-strict-aliasing


Backtrace:

(gdb) bt
#0  __memmove_ssse3_back () at ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:2060
#1  0x00000000004d88db in display_scroll_band (start_y=-28, x_offset=2, h=13)
    at display/simgraph16.cc:3936
#2  0x000000000071ba31 in ticker::draw () at simticker.cc:124
#3  0x00000000005bd110 in win_display_flush (konto=100677.06) at gui/simwin.cc:1525
#4  0x00000000006ff103 in intr_refresh_display (dirty=false) at simintr.cc:77
#5  0x00000000007585ee in karte_t::sync_step (this=0x1194a00, delta_t=40, sync=true, display=true)
    at simworld.cc:4329
#6  0x000000000076b528 in karte_t::interactive (this=0x1194a00, quit_month=2147483647)
    at simworld.cc:9116
#7  0x00000000007098b7 in simu_main (argc=9, argv=0x7fffffffe0e8) at simmain.cc:1361
#8  0x000000000071b731 in sysmain (argc=9, argv=0x7fffffffe0e8) at simsys.cc:804
#9  0x00000000007cc031 in main (argc=9, argv=0x7fffffffe0e8) at simsys_posix.cc:186


TurfIt

colordepth 0 for command line server.

jamespetts

TurfIt - thank you for your help. Vladki - let me know how you get on trying COLOR_DEPTH = 0.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Vladki

I does not compile wit COLOR_DEPTH=0


vladki@b:~/simutrans-experimental$ vi config.default
vladki@b:~/simutrans-experimental$ make
===> CXX display/simgraph0.cc
display/simgraph0.cc: In function 'bool display_load_font(const char*)':
display/simgraph0.cc:64:35: error: ambiguating new declaration of 'bool display_load_font(const char*)'
bool display_load_font(const char*)
                                   ^
In file included from display/../besch/bild_besch.h:10:0,
                 from display/simgraph0.cc:9:
display/../besch/../display/simgraph.h:141:8: note: old declaration 'uint16 display_load_font(const char*)'
uint16 display_load_font(const char* fname);
        ^
display/simgraph0.cc: At global scope:
display/simgraph0.cc:194:47: warning: unused parameter 'n' [-Wunused-parameter]
void display_fit_img_to_width( const image_id n, sint16 new_w )
                                               ^
display/simgraph0.cc:194:57: warning: unused parameter 'new_w' [-Wunused-parameter]
void display_fit_img_to_width( const image_id n, sint16 new_w )
                                                         ^
display/simgraph0.cc:297:27: warning: unused parameter 'char_code' [-Wunused-parameter]
bool has_character( utf16 char_code )
                           ^
common.mk:50: recipe for target 'build/default/display/simgraph0.o' failed
make: *** [build/default/display/simgraph0.o] Error 1

DrSuperGood

The graphics API was changed a while back after a few ambiguities and errors. Is it possible that the 0 colour one has not been updated to reflect the API in experimental?

jamespetts

When was it updated, do you know?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

TurfIt


jamespetts

Splendid, thank you. This should now be fixed - could you possibly re-test?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Vladki

compilation is ok, server started - no crash so far, I will test more tonight.

many thanks James

Vladki

Testing server is up and running. Please try to connect to server.exp.simutrans.com.
Look at http://server.exp.simutrans.com/ to download latest pakset and linux executable, and info about the exact version I have compiled.

The game there shows some signaling schemes discussed recently. The game is not locked but please play nicely. If you want to show your layout, find some empty place and do it. Delete only your own tracks.
Please try and tell me if you succeeded.

jamespetts

I have tested connecting to it, which seems to work. I have not had a chance to look at the signalling in any detail now, but at least the server is working. Thank you for that.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Ves

I tried to connect last night, but could not connect due to the paksets doesnt match. I tried the pakset you provided, I tried some of my own compilations, but always, they where not the same as the server.
Today, it tells me the server is not responding.

Isaac Eiland-Hall

Hmm. Just checked and the server has virtually no load on it. I've got a file upload running, but it's well below (around 1/10th) saturating the link (saturating my outbound link which is around 10% of the server's inbound link)...

I don't see the simutrans-server process; I forget the name of the process, but IIRC it did look like simutrans; and currently nothing does. Maybe it crashed?

Vladki

#19
Yes the process (simutrans-experimental) crashed. I'm compiling fresh executable and pakset, and will restart it soon, with some debug and logging to see why it crashed.
So, the crash may be because I was over quota. I have deleted the pak128.britain sources, and will compile them at home, and rsync.

I have one more fix for the makefile - there was a duplicate outside.dat generated on the fly in makefile. That may be the reason for pakset mismatch:


diff --git a/Makefile b/Makefile
index e88941d..8c85e5e 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
# to get fresh and ready to deploy .tbz2 and .zip archives
#
# Change THIS to change the version string encoded in the pak file
-VERSION_STRING = "pak128.Britain-Ex-0.9.2"
+#VERSION_STRING = "pak128.Britain-Ex-0.9.2"
#
#
#
@@ -156,12 +156,12 @@ $(DIRS256):
$(OUTSIDE):
        @echo "===> OUTSIDE with REVISION and grounds"
        @mkdir -p $(PAKDIR)
-       @$(MAKEOBJ) PAK128 $(PAKDIR)/ $@/ > /dev/null
-       @echo -e "Obj=ground\nName=Outside\ncopyright=$(VERSION_STRING)" >$@/outsiderev.dat
-       #@svnversion >>$@/outsiderev.dat
-       @echo -e "Image[0][0]=images/ls-water-outside-128.0.0\n-" >>$@/outsiderev.dat
-       @$(MAKEOBJ) PAK128 $(PAKDIR)/ $@/outsiderev.dat > /dev/null
-       @rm $@/outsiderev.dat
+       @$(MAKEOBJ) quiet PAK128 $(PAKDIR)/ $@/ > /dev/null
+#      @echo -e "Obj=ground\nName=Outside\ncopyright=$(VERSION_STRING)" >$@/outsiderev.dat
+#      @svnversion >>$@/outsiderev.dat
+#      @echo -e "Image[0][0]=images/ls-water-outside-128.0.0\n-" >>$@/outsiderev.dat
+#      @$(MAKEOBJ) PAK128 $(PAKDIR)/ $@/outsiderev.dat > /dev/null
+#      @rm $@/outsiderev.dat

clean:
        @echo "===> CLEAN"


Also duplicate met-class-e.dat renamed to met-class-e.not. To have consistent results. New files uploaded, server is up and running

Isaac Eiland-Hall

awww, hopefully it'll stay up longer next time :)

Junna

Also as I recall S:Ex (heh) is still bugged in that it will display paksets as mismatched even when they are not (they are the exact same). If you force a connection through net:address-to-server it should work though, if they are really the same.

Ves

#22
Tried again today, downloading a new pakset from the server and using a compile that matches, but it again tells me that a big bunch of objects differ, and that one object is missing on the server (RES_A_1950[]_01_28)
The stuff that is different all appears to be railway signs and signals.




How do you force the connection?
"net:server.exp.simutrans.com" returned that the server did not respond

edit: clarification

Vladki

Do you really have a clean pak directory? Isn't it mixed with some swedish paks?

jamespetts

It does look as though you have a different version of the pakset, as there is at least one item missing. Can you check that you have the up to date pakset from the half-heights branch?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Junna

It says this, but I know for a fact that it says this when they are the same (they are loaded from the exact same place). It simply says this regardless--usually signals, but not always.

How you force a load is you go into "load game" and type net: followed by the address (ip and dns both work).

Previously it would cause a lot of desynchs, but when they are actually the same, it should be fine (I did not have problems with it).

Ves

#26
I have now tried again to download a fresh pakset provided from the server webbsite linked earlier, and it gives me the same result.
However, using Junnas trick got me onto the server.

edit: no there is still something wrong. It disconnects me from the server directly. will download a snippet from the right commit on github and try further on that.

Junna

Why is there only a linux executable by the way? I can't make my own compile any more since it started giving some errors a few months ago.

jamespetts

Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Vladki

Quote from: Junna on June 28, 2016, 08:13:19 PM
Why is there only a linux executable by the way? I can't make my own compile any more since it started giving some errors a few months ago.
Just because I do not have WIndows computer with compiler. If someone can provide fresh windows build, I'll gladly upload.

And here is a fix for the missing building - the weird char is "soft hyphen":


diff --git a/citybuildings/res-50.dat b/citybuildings/res-50.dat
index 1b4a3c7..6617f39 100644
--- a/citybuildings/res-50.dat
+++ b/citybuildings/res-50.dat
@@ -182,7 +182,7 @@ BackImage[3][0][0][1][0][1]=images/res/50-apartments2-1.2.3
BackImage[3][0][0][0][0][1]=images/res/50-apartments2-1.3.3
--
Obj=building
-Name=RES_A_1950<AD>_01_28
+Name=RES_A_1950_01_28
#Ugly Appartments set #2
copyright=Archon
type=RES

jamespetts

Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Vladki

I have double checked - deleted my pak directory, downloaded zip, unzipped and connected to server without any problems.
Ves can you retry? - move away your current pak128.Britain-ex and any addons, unzip and try again.

Ves

Now I downloaded a snapshot of pak.britain with the correct git commit from github and compiled it using a makeobj, which is from the same git commit as the executable it self.
This generated fewer errors, but using Junnas trick, I got my self onto the server and this time it did not disconnect!
Now the game even remembers and it did not have to mismatch again to logon a second time.

Vladki, are you sure that the downloadable pakset from your server is the right one? Or could it have been compiled with an old makeobj or something?
Or is it something of me running windows 10 and you compiled on Linux?

edit: You posted the minute before me. im in! :)

Vladki

the pakset is compiled on linux, and is exactly the zipped pak128 used by the server itself

Junna

It's not related to the compile. This happens for me with my own pak on my own server, so it's totally unrelated to that. It's something code dependent somehow.

Ves, could you give me your new compile? I only have this old one you uploaded a month ago.