h-uru / dirtsand Goto Github PK
View Code? Open in Web Editor NEWThe D'ni in Real-Time Server and Network Dæmon
License: GNU Affero General Public License v3.0
The D'ni in Real-Time Server and Network Dæmon
License: GNU Affero General Public License v3.0
When a player crashes, the vault marks him as offline but the game server doesn't send any kind of page out message to remove his ghost from the age.
DS::FileStream::atEof()
relies on undefined behavior if the file is opened in read mode. It basically tests for EOF by trying to read a character from the file and put the character back for future read attempts. In Ubuntu 20.04 on WSL2, this causes the character read by atEof() to be discarded. This is also true for Alpine running in a docker container on WSL2.
We need to properly support ownership of synched objects. This will definitely fix some of the weird kickable warping that we're seeing. Hopefully, it will also fix the weird issues where lots of game objects get in a weird state when multiple players are in the age.
'hood SDL should be randomized on neighborhood creation.
This is a request to have more information when using the 'help' command, as well as the ability to display more help for specific commands if necessary. For example:
ds-918> help
addacct <user> <password> [adds an account]
addallplayers <playerId> [whatever this does]
clients [lists currently connected clients]
...
If more detail was needed for a specific command rather than a short blurb, typing 'help [command]' could be used to display that information. An example would be the modacct command; typing "help modacct" could have the console output what the different flags are and what they do.
Test and set will currently do two very bad things:
When using the Debug client, plClient throws an assert when reading the Layer SDL descriptor on link to Relto.
It's awkward to have two "Branan"s as members of the Neighborhood....
DeletePlayer should probably remove the deleted PlayerInfo from all PlayerInfoLists he's a child of. Or, if we're planning on adding undelete support, mark the refs as dead in some way.
Folllowing the Dirtsand installation tutorial here : http://www.guildofwriters.org/wiki/Development:DirtSand, I get the following error during the "make" command.
dirtsand@vm-debian:~/src/build$ make
[ 1%] Building CXX object CMakeFiles/dirtsand.dir/GateKeeper/GateServ.cpp.o
/home/dirtsand/src/GateKeeper/GateServ.cpp: In function ‘void DS::GateKeeper_Shutdown()’:
/home/dirtsand/src/GateKeeper/GateServ.cpp:239: error: ‘sleep_for’ is not a member of ‘std::this_thread’
make[2]: *** [CMakeFiles/dirtsand.dir/GateKeeper/GateServ.cpp.o] Error 1
make[1]: *** [CMakeFiles/dirtsand.dir/all] Error 2
make: *** [all] Error 2
OS: Debian 4.0.6 64-bit
The games manager is unimplemented. This breaks (at least):
Sending a KI note/image (publishing a vault node) does not send the vault node added callback message, nor does it set the sender ID properly--you have to log out and back in to see the ki note/image. "From" appears as "DRC" (node #0) in game.
If a single Age file is encrypted, DirtSand will send down junked SDL blobs until the offending Age file is decrypted and the server is restarted. This happens for all Ages, not just the Age whose files are encrypted.
When a pfKIMsg is sent in an Age, it causes other players to crash.
The other players never receive a pfKIMsg (based on network log output), and using PlasmaClient it appeared that sending a chat message caused other players to warp to the sender's location before immediately crashing.
dbinit.sql and functions.sql specify the database name "dirtsand" -- this potentially corrupts the vault (in the case of the former) if attempting to setup a second shard with a separate vault.
Weird Linking Error that I don't know how to describe.
A links into Neighborhood. B links into Neighborhood. A links to Nexus and then back to Neighborhood. B cannot see A though A can see B as default man.
Currently, the FileServ does lots of wasteful userland copying by reading in chunks, then writing them to the socket. We should convert this to sendfile
and reap some speed benefits.
This makes refactoring easier and safer, especially with heavily-used methods like read
and write
.
Tools like clang-tidy or some IDEs can help with this.
Hi,
I wanted to install dirtsand and followed the read me, but I always get a error message at the Compile from dirtsand in step 3 of the README
$ cmake -DCMAKE_INSTALL_PREFIX=/opt/dirtsand ..
_
CMake Error at CMakeLists.txt:41 (find_package):
By not providing "Findstring_theory.cmake" in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
"string_theory", but CMake did not find one.Could not find a package configuration file provided by "string_theory"
(requested version 1.3) with any of the following names:string_theoryConfig.cmake string_theory-config.cmake
Add the installation prefix of "string_theory" to CMAKE_PREFIX_PATH or set
"string_theory_DIR" to a directory containing one of the above files. If
"string_theory" provides a separate development package or SDK, be sure it
has been installed.
_
Could you please tell me which path under string_theory_Dir I have to put in?
Thank you.
System:
ubuntu-16.04.3-server-amd64
Package:
libssl-dev (v 1.0.2g-1ubuntu4.8)
postgresql (v 9.5+173)
postgresql-server-dev-9.5 (v 9.5.7-0ubuntu0.16.04)
libpqxx-dev (4.0.1+dfsg-3ubuntu2)
autoconf (2.69-9)
automake (1:1.15-4ubuntu1)
libtool (2.4.6-0.1)
git (1:2.7.4-0ubuntu1.2)
apache2 (2.4.18-2ubuntu3.4)
libpq-dev (9.5.7-0ubuntu0.16.04)
libreadline-dev (6.3-8ubuntu2)
g++ (4:5.3.1-1ubuntu1)
zlib1g-dev (1:1.2.8.dfsg-2ubuntu4.1)
postgresql-contrib (9.5+173)
cmake (3.5.1-1ubuntu3)
cmake-qt-gui (3.5.1-1ubuntu3)
The Relto bookshelf will never accumulate any books because DirtSand does not add the player's AgesIOwn folder as a child of the AgeNode on age initialization (AuthVault.cpp v_create_age).... psnlBookshelf.py, asks for the ptAgeVault's AgesIOwnFolder.
important for synch
As of the ST::string merge, DirtSand crashes when attempting to use a console command with zero arguments. The restrict
command is affected by this issue. The crashing line is dsmain.cpp:190
ST::string arg_str = ST::string(cmdbuf + args.front().size() + 1);
OpenSSL has removed support for SHA-0. This causes Types/ShaHash.cpp#L75 to not work properly and break compilation. This functionality is used to create email address style accounts, which has never been particularly emphasized by DS.
See: https://www.openssl.org/blog/blog/2015/07/28/code-cleanup/
"We also removed support for the broken SHA0 and DSS0, the CBCM mode of DES (invented by IBM and not used anywhere), and the maintenance of our own free lists, OPENSSL_NO_BUF_FREELISTS."
After some hours of desperation creating a new public age with dirtsand, I suddenly noticed that the static_ages.ini file is only read on the very first startup.
There should be a way to easily add new public ages, e.g. by re-reading the static_ages.ini on every startup or something like that.
Hi, I'm trying to build dirtsand but running into problems with string_theory (maybe among other things). Please see below for the error message I'm getting.
I'm on Arch Linux, I have the following versions of the prerequisites:
Any ideas? Thanks!
[dirtsand@home build]$ make && sudo make install
[ 1%] Building CXX object CMakeFiles/test_sha.dir/streams.cpp.o
/opt/dirtsand/dirtsand/streams.cpp: In member function ‘ST::string DS::Stream::readString(size_t, DS::StringType)’:
/opt/dirtsand/dirtsand/streams.cpp:29:16: error: ‘ST::utf16_buffer’ {aka class ST::buffer<char16_t>’} has no member named ‘allocate’
29 | result.allocate(length);
| ^~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:30:46: error: invalid conversion from const void*’ to ‘void*’ [-fpermissive]
30 | ssize_t bytes = readBytes(result.data(), length * sizeof(char16_t));
| ~~~~~~~~~~~^~
| |
| const void*
In file included from /opt/dirtsand/dirtsand/streams.cpp:18:
/opt/dirtsand/dirtsand/streams.h:55:41: note: initializing argument 1 of ‘virtual ssize_t DS::Stream::readBytes(void*, size_t)’
55 | virtual ssize_t readBytes(void* buffer, size_t count) = 0;
| ~~~~~~^~~~~~
/opt/dirtsand/dirtsand/streams.cpp:36:16: error: ‘ST::char_buffer’ {aka ‘class ST::buffer<char>’} has no member named ‘allocate’
36 | result.allocate(length);
| ^~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:37:46: error: invalid conversion from const void*’ to ‘void*’ [-fpermissive]
37 | ssize_t bytes = readBytes(result.data(), length * sizeof(char));
| ~~~~~~~~~~~^~
| |
| const void*
In file included from /opt/dirtsand/dirtsand/streams.cpp:18:
/opt/dirtsand/dirtsand/streams.h:55:41: note: initializing argument 1 of ‘virtual ssize_t DS::Stream::readBytes(void*, size_t)’
55 | virtual ssize_t readBytes(void* buffer, size_t count) = 0;
| ~~~~~~^~~~~~
/opt/dirtsand/dirtsand/streams.cpp: In member function ‘ST::string DS::Stream::readSafeString(DS::StringType)’:
/opt/dirtsand/dirtsand/streams.cpp:54:16: error: ‘ST::utf16_buffer’ {aka class ST::buffer<char16_t>’} has no member named ‘allocate’
54 | result.allocate(length);
| ^~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:55:46: error: invalid conversion from const void*’ to ‘void*’ [-fpermissive]
55 | ssize_t bytes = readBytes(result.data(), length * sizeof(char16_t));
| ~~~~~~~~~~~^~
| |
| const void*
In file included from /opt/dirtsand/dirtsand/streams.cpp:18:
/opt/dirtsand/dirtsand/streams.h:55:41: note: initializing argument 1 of ‘virtual ssize_t DS::Stream::readBytes(void*, size_t)’
55 | virtual ssize_t readBytes(void* buffer, size_t count) = 0;
| ~~~~~~^~~~~~
/opt/dirtsand/dirtsand/streams.cpp:59:21: error: ‘ST::utf16_buffer’ {aka class ST::buffer<char16_t>’} has no member named ‘front’
59 | if ((result.front() & 0x8000) != 0) {
| ^~~~~
/opt/dirtsand/dirtsand/streams.cpp:61:27: error: assignment of read-only location ‘*(result.ST::buffer<char16_t>::operator const char16_t*() + ((sizetype)(((long unsigned int)i) * 2)))’
61 | result[i] = ~result[i];
| ~~~~~~~~~~^~~~~~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:66:16: error: ‘ST::char_buffer’ {aka ‘class ST::buffer<char>’} has no member named ‘allocate’
66 | result.allocate(length);
| ^~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:67:46: error: invalid conversion from const void*’ to ‘void*’ [-fpermissive]
67 | ssize_t bytes = readBytes(result.data(), length * sizeof(char));
| ~~~~~~~~~~~^~
| |
| const void*
In file included from /opt/dirtsand/dirtsand/streams.cpp:18:
/opt/dirtsand/dirtsand/streams.h:55:41: note: initializing argument 1 of ‘virtual ssize_t DS::Stream::readBytes(void*, size_t)’
55 | virtual ssize_t readBytes(void* buffer, size_t count) = 0;
| ~~~~~~^~~~~~
/opt/dirtsand/dirtsand/streams.cpp:70:21: error: ‘ST::char_buffer’ {aka ‘class ST::buffer<char>’} has no member named ‘front’
70 | if ((result.front() & 0x80) != 0) {
| ^~~~~
/opt/dirtsand/dirtsand/streams.cpp:72:27: error: assignment of read-only location ‘*(result.ST::buffer<char>::operator const char*() + ((sizetype)i))’
72 | result[i] = ~result[i];
| ~~~~~~~~~~^~~~~~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp: In member function ‘void DS::Stream::writeSafeString(const ST::string&, DS::StringType)’:
/opt/dirtsand/dirtsand/streams.cpp:98:23: error: assignment of read-only location ‘*(buffer.ST::buffer<char16_t>::operator const char16_t*() + ((sizetype)(((long unsigned int)i) * 2)))’
98 | buffer[i] = ~buffer[i];
| ~~~~~~~~~~^~~~~~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:107:23: error: assignment of read-only location ‘*(buffer.ST::buffer<char>::operator const char*() + ((sizetype)i))’
107 | buffer[i] = ~buffer[i];
| ~~~~~~~~~~^~~~~~~~~~~~
make[2]: *** [CMakeFiles/test_sha.dir/build.make:76: CMakeFiles/test_sha.dir/streams.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:77: CMakeFiles/test_sha.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
We need to track the current population for public ages. This is huge in polish and helps players find where people are in game.
I set up a new instance of dirtsand from scratch on a freshly installed Ubuntu server 17.04. Logging in and configuring my avatar works (mostly) fine but linking the first time to Personal will crash the whole server (as well as my bash). It happens every time I select my player after logging in with my account. This is the crash message of dirtsand:
ds-918> [Status] Running on 0.0.0.0/8080
[Lobby] Running on 0.0.0.0/14617
[Auth] Login U:admin P:{ password hash } T: O:win
[Auth] 192.168.0.41/50224 logged in as admin {17e4dd60-4b4e-4104-be20-a97d12c89a05}
[Auth] {17e4dd60-4b4e-4104-be20-a97d12c89a05} signed in as Admin (10104)
[Auth] 192.168.0.41/50224 Requesting game server {b4cf331d-b586-499d-b33e-20feeafad256} Personal
Segfault at bin/dirtsand(+0x11b590) [0x563c86865590]
from bin/dirtsand(+0x11b6c6) [0x563c868656c6]
from /lib/x86_64-linux-gnu/libc.so.6(+0x37140) [0x7f67a2ee3140]
from bin/dirtsand(_ZN3SDL5State5mergeERKS0_+0x28) [0x563c8688027c]
from bin/dirtsand(_Z15start_game_hostj+0x7ee) [0x563c86853921]
from bin/dirtsand(_Z14find_game_hostj+0xa9) [0x563c86846e7d]
from bin/dirtsand(_Z7cb_joinR18GameClient_Private+0xbc) [0x563c86847028]
from bin/dirtsand(_Z11cb_sockReadR18GameClient_Private+0x81) [0x563c86847841]
from bin/dirtsand(_Z13wk_gameWorkerPv+0x171) [0x563c86847c31]
from bin/dirtsand(_ZSt13__invoke_implIvPFvPvEJS0_EET_St14__invoke_otherOT0_DpOT1_+0x34) [0x563c86813a53]
from bin/dirtsand(_ZSt8__invokeIPFvPvEJS0_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS4_DpOS5_+0x4e) [0x563c86813071]
from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEE9_M_invokeIJLm0ELm1EEEEDTcl8__invokespcl10_S_declvalIXT_EEEEESt12_Index_tupleIJXspT_EEE+0x43) [0x563c868142bb]
from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEEclEv+0x2c) [0x563c8681425c]
from bin/dirtsand(_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFvPvES3_EEEEE6_M_runEv+0x1c) [0x563c8681422c]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xbc0ff) [0x7f67a377e0ff]
from /lib/x86_64-linux-gnu/libpthread.so.0(+0x77fc) [0x7f67a32937fc]
from /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f67a2fc0b5f]
Unhandled exception at bin/dirtsand(+0x11b590) [0x563c86865590]
from bin/dirtsand(+0x11b6e0) [0x563c868656e0]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
from bin/dirtsand(+0x11b6d0) [0x563c868656d0]
from /lib/x86_64-linux-gnu/libc.so.6(+0x37140) [0x7f67a2ee3140]
from bin/dirtsand(_ZN3SDL5State5mergeERKS0_+0x28) [0x563c8688027c]
from bin/dirtsand(_Z15start_game_hostj+0x7ee) [0x563c86853921]
from bin/dirtsand(_Z14find_game_hostj+0xa9) [0x563c86846e7d]
from bin/dirtsand(_Z7cb_joinR18GameClient_Private+0xbc) [0x563c86847028]
from bin/dirtsand(_Z11cb_sockReadR18GameClient_Private+0x81) [0x563c86847841]
from bin/dirtsand(_Z13wk_gameWorkerPv+0x171) [0x563c86847c31]
from bin/dirtsand(_ZSt13__invoke_implIvPFvPvEJS0_EET_St14__invoke_otherOT0_DpOT1_+0x34) [0x563c86813a53]
from bin/dirtsand(_ZSt8__invokeIPFvPvEJS0_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS4_DpOS5_+0x4e) [0x563c86813071]
from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEE9_M_invokeIJLm0ELm1EEEEDTcl8__invokespcl10_S_declvalIXT_EEEEESt12_Index_tupleIJXspT_EEE+0x43) [0x563c868142bb]
from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEEclEv+0x2c) [0x563c8681425c]
from bin/dirtsand(_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFvPvES3_EEEEE6_M_runEv+0x1c) [0x563c8681422c]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xbc0ff) [0x7f67a377e0ff]
from /lib/x86_64-linux-gnu/libpthread.so.0(+0x77fc) [0x7f67a32937fc]
from /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f67a2fc0b5f]
Unhandled exception at bin/dirtsand(+0x11b590) [0x563c86865590]
from bin/dirtsand(+0x11b6e0) [0x563c868656e0]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
from bin/dirtsand(+0x11b6ea) [0x563c868656ea]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
from bin/dirtsand(+0x11b6d0) [0x563c868656d0]
from /lib/x86_64-linux-gnu/libc.so.6(+0x37140) [0x7f67a2ee3140]
from bin/dirtsand(_ZN3SDL5State5mergeERKS0_+0x28) [0x563c8688027c]
from bin/dirtsand(_Z15start_game_hostj+0x7ee) [0x563c86853921]
from bin/dirtsand(_Z14find_game_hostj+0xa9) [0x563c86846e7d]
from bin/dirtsand(_Z7cb_joinR18GameClient_Private+0xbc) [0x563c86847028]
from bin/dirtsand(_Z11cb_sockReadR18GameClient_Private+0x81) [0x563c86847841]
from bin/dirtsand(_Z13wk_gameWorkerPv+0x171) [0x563c86847c31]
from bin/dirtsand(_ZSt13__invoke_implIvPFvPvEJS0_EET_St14__invoke_otherOT0_DpOT1_+0x34) [0x563c86813a53]
from bin/dirtsand(_ZSt8__invokeIPFvPvEJS0_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS4_DpOS5_+0x4e) [0x563c86813071]
from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEE9_M_invokeIJLm0ELm1EEEEDTcl8__invokespcl10_S_declvalIXT_EEEEESt12_Index_tupleIJXspT_EEE+0x43) [0x563c868142bb]
from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEEclEv+0x2c) [0x563c8681425c]
from bin/dirtsand(_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFvPvES3_EEEEE6_M_runEv+0x1c) [0x563c8681422c]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xbc0ff) [0x7f67a377e0ff]
from /lib/x86_64-linux-gnu/libpthread.so.0(+0x77fc) [0x7f67a32937fc]
from /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f67a2fc0b5f]
Unhandled exception at bin/dirtsand(+0x11b590) [0x563c86865590]
from bin/dirtsand(+0x11b6e0) [0x563c868656e0]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
from bin/dirtsand(+0x11b6ea) [0x563c868656ea]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
from bin/dirtsand(+0x11b6ea) [0x563c868656ea]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
from bin/dirtsand(+0x11b6d0) [0x563c868656d0]
from /lib/x86_64-linux-gnu/libc.so.6(+0x37140) [0x7f67a2ee3140]
from bin/dirtsand(_ZN3SDL5State5mergeERKS0_+0x28) [0x563c8688027c]
from bin/dirtsand(_Z15start_game_hostj+0x7ee) [0x563c86853921]
from bin/dirtsand(_Z14find_game_hostj+0xa9) [0x563c86846e7d]
from bin/dirtsand(_Z7cb_joinR18GameClient_Private+0xbc) [0x563c86847028]
from bin/dirtsand(_Z11cb_sockReadR18GameClient_Private+0x81) [0x563c86847841]
from bin/dirtsand(_Z13wk_gameWorkerPv+0x171) [0x563c86847c31]
from bin/dirtsand(_ZSt13__invoke_implIvPFvPvEJS0_EET_St14__invoke_otherOT0_DpOT1_+0x34) [0x563c86813a53]
from bin/dirtsand(_ZSt8__invokeIPFvPvEJS0_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS4_DpOS5_+0x4e) [0x563c86813071]
from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEE9_M_invokeIJLm0ELm1EEEEDTcl8__invokespcl10_S_declvalIXT_EEEEESt12_Index_tupleIJXspT_EEE+0x43) [0x563c868142bb]
from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEEclEv+0x2c) [0x563c8681425c]
from bin/dirtsand(_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFvPvES3_EEEEE6_M_runEv+0x1c) [0x563c8681422c]
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xbc0ff) [0x7f67a377e0ff]
from /lib/x86_64-linux-gnu/libpthread.so.0(+0x77fc) [0x7f67a32937fc]
from /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f67a2fc0b5f]
My configuration:
DS: built from latest source (tried with an older commit too; same result)
Client: Internal, Debug; built from source; startet with /LocalData and /SkipPreload
OS: Ubuntu server 17.04 x64
From dirtsand.ini:
File.Host = 127.0.0.1
Auth.Host = 192.168.0.29
Game.Host = 192.168.0.29
File.Root = /home/dirtsand/dirtsand-root/file
Auth.Root = /home/dirtsand/dirtsand-root/authdata
Sdl.Path = /home/dirtsand/dirtsand-root/file/SDL
Age.Path = /home/dirtsand/dirtsand-root/file/ages
FS setup
All files are unencrypted as I'm using the internal client. Personal.age
and Personal.sdl
exist in both authdata/
and files
+--dirtsand-root/
| +--file/
| | +--SDL/
| | | +--*.sdl
| | +--ages/
| | | +--*.age
| | | +--*.fni
| +--authdata/
| | +--Python/
| | | +--*.py
| | +--SDL/
| | | +--*.sdl
| +--bin/
| | +--dirtsand
| | +--dsData.sh
| +--dirtsand.ini
The GNU Affero General Public License (AGPL) differs from the current GNU General Public License (GPL) in that it would require the full source used on any DIRTSAND server (or derivative work of DIRTSAND's sources) to be made available to anyone who can connect to the server software. This change is key in promoting openness and encouraging sharing of ideas, since it ensures the server software remains in the hands of the open source community.
This proposal is for the immediate relicensing of DIRTSAND to the Affero General Public License version 3 or later (AGPLv3+). For more information about the AGPLv3, please see http://www.gnu.org/licenses/agpl-3.0.html . In order to go ahead with this proposal, we need permission from everyone listed on https://github.com/H-uru/dirtsand/contributors to relicense their code under the new license.
Please respond below with a statement _clearly_ indicating if you will allow your code to be relicensed under the AGPLv3+.
The servers don't send clothing SDL about players already in the age when a new player links in.
Commit 450107d introduced a segmentation fault on gcc 5.4.0. If there are any NPC clones loaded by a game host, the segmentation fault occurs when unreffing and deleting the stored clone message. To reproduce this issue, link to sphere 1 of Ahnonay with loaded quabs, then link to Relto. DS will crash on link out.
Segfault at bin/dirtsand() [0x52a284] /home/adamj/dev/dirtsand/dsmain.cpp:89
from bin/dirtsand() [0x52a3ac] /home/adamj/dev/dirtsand/dsmain.cpp:108 (discriminator 16)
from /lib/x86_64-linux-gnu/libc.so.6(+0x354b0) [0x7f46ec4244b0]
from bin/dirtsand(_ZN4MOUL9Creatable10safe_unrefEPS0_+0x49) [0x515828] /home/adamj/dev/dirtsand/PlasMOUL/creatable.h:44 (discriminator 1)
from bin/dirtsand(_ZN4MOUL9Creatable5unrefEv+0x18) [0x515882] /home/adamj/dev/dirtsand/PlasMOUL/creatable.h:57
from bin/dirtsand(_Z16dm_game_shutdownP16GameHost_Private+0x101) [0x50ee40] /home/adamj/dev/dirtsand/GameServ/GameHost.cpp:74 (discriminator 2)
from bin/dirtsand(_Z11dm_gameHostP16GameHost_Private+0x5e) [0x51418c] /home/adamj/dev/dirtsand/GameServ/GameHost.cpp:810
from bin/dirtsand(_ZNSt12_Bind_simpleIFPFvP16GameHost_PrivateES1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE+0x40) [0x523708] /usr/include/c++/5/functional:1532
from bin/dirtsand(_ZNSt12_Bind_simpleIFPFvP16GameHost_PrivateES1_EEclEv+0x2c) [0x523612] /usr/include/c++/5/functional:1520
from bin/dirtsand(_ZNSt6thread5_ImplISt12_Bind_simpleIFPFvP16GameHost_PrivateES3_EEE6_M_runEv+0x1c) [0x5235a2] /usr/include/c++/5/thread:115
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb8c80) [0x7f46ecca3c80]
from /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f46ec7bf6ba]
from /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f46ec4f582d]
Segmentation fault
On the current release of the Gehn Shard (28):
If User A is playing French Uru, is standing in the Watcher's Pub, and is reading the journal. Then, if User B (playing in any language) sends user A a PM, then user B will crash on receiving the automated AFK response from user A.
If an SDL Decriptor is missing its version, DirtSand will happily use heap garbage in its descriptor structure. This results in producing a corrupted/invalid SDL blob and linking to the SDL DESC PROBLEM age.
This is a request to have added a command that lists all created accounts in the server console. Alternatively (or in addition to?), it could display all created avatars, possibly by account. An example of how this might appear follows.
ds-918> acctlist
Account Name | Date Created | Last login | Active?
dave | 12/07/2021 | 12/08/2021 08:00 | No
ds-918> avlist dave
Avatar Name (KI#) | Date Created | Last Login | Active?
Briggs (10104) | 12/07/2021 | 12/07/2021 20:30 | No
Big Challenges (10208) | 12/07/2021 | 12/07/2021 20:35 | No
Linking to the Bahro Caves (specifically the BlueSpiral Cave) end at the black screen age. This is probably related to DS not respecting kBasicLink.
DIRTSAND declares the vault node Text_1
/Text_2
columns as character varying(1024)
, but the client allows KI text notes to be (roughly) 2048 characters long.
This means that a player with a regular client can type a moderately long KI text note that DIRTSAND is unable to save. When that happens, the player has no indication that anything went wrong - the client accepts the text and caches it locally, but the server silently fails to save it to the vault. The player can only notice the problem after the client re-fetches the vault node from the server, i. e. after logging out and back in.
The only indication of the error is a log message on the server side:
.../dirtsand/AuthServ/AuthVault.cpp:1005:
Postgres UPDATE error: ERROR: value too long for type character varying(1024)
The same problem also applies to the neighborhood description text, which is also stored in Text_1
and AFAICT has no client-side limit at all.
The gameserver SDL needs to be merged server-side with the age-vault SDL and the global SDL. The exact details of which sections of each blob override the others aren't clear just yet. More testing may be needed.
Prints the following:
() grsnGetKI: Notify event state=1.000000,id=1,events=
() [[7L, 1, 1]]
When a SubAge is created, the parent should be made a SubAge of the child. (Insert an AgeLink to the parent in the SubAges folder of the child) Currently SubAge functionality only works by virtue of the fact that the client will attempt to create the parent age using the correct GUID if it cannot find the appropriate SubAge.
If the server closes improperly, clients are not marked as offline and therefore are still listed as online when the server is restarted.
Hi:
I have DirstSand running on Fordora Core 14 64-bit. I have a client which I have not modified must built from source to access the server. Whenever I walk with the mouse the sever crashes, the console looks like this:
Unhandled exception at bin/dirtsand() [0x4c3a95]
from bin/dirtsand() [0x4c3b59]
from /usr/lib64/libstdc++.so.6() [0x3069eba2a6]
from /usr/lib64/libstdc++.so.6() [0x3069eba2d3]
from /usr/lib64/libstdc++.so.6(__cxa_rethrow+0x46) [0x3069eba426]
from bin/dirtsand(_ZN4MOUL7Factory14WriteCreatableEPN2DS6StreamEPNS_9CreatableE+0) [0x4efef8]
from bin/dirtsand(_ZN4MOUL7Factory4ReadINS_10NetMessageEEEPT_PN2DS6StreamE+0x18) [0x4b616f]
from bin/dirtsand(_Z15dm_game_messageP16GameHost_PrivateP21Game_PropagateMessage+0x67) [0x4b1762]
from bin/dirtsand(_Z11dm_gameHostPv+0xb9) [0x4b2318]
from /lib64/libpthread.so.0() [0x305fe06ccb]
from /lib64/libc.so.6(clone+0x6d) [0x305fae0c2d]
Aborted (core dumped)
This breaks the telescope in the Neighborhood. Once someone else uses it, the plEnableMsg sent to reenable the clickable is eaten. There are obviously more instances of this, but this is just the one I noticed in my testing.
The README section on Dockersand states that you need to be careful about line endings on Windows:
NOTE: Please ensure you are using
git config core.autocrlf false
if on Windows. Otherwise, the bash script files can get corrupted with the wrong line endings and your server container will fail to start.
Per @dgelessus:
a better solution would be to add a .gitattributes file that declares the appropriate newline mode for the .sh files. That way, users don't have to change their Git configs.
Should be able to do something like this: *.sh text eol=lf
plParticleTransferMsg
plParticleKillMsg
Needed for Eder Kemo and Eder Gira
This is a minor annoyance on Linux, but might turn out to be necessary and not worth fixing.
When I type ./do
and hit tab in my terminal, it cannot autocomplete to ./dockersand.sh
because it sees 3 files with the executable (+x
) bit set and doesn't know which one to use.
I'm reasonably sure Windows doesn't use/preserve that attribute, so I'm pretty certain we don't need it set on dockersand.bat
, but I'm less clear about the dockersand.ps1
PowerShell file (since hypothetically someone could choose to run PowerShell on Linux or macOS)
When a user creates a public age, the total population count in the database is set to 0. This causes Neighborhoods to be filtered out in the nexus. We should really count the number of refs in the database for the AgeOwners folder.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.