diff options
| author | fusion32 <marcopuzziello@gmail.com> | 2025-07-19 11:35:11 -0300 |
|---|---|---|
| committer | fusion32 <marcopuzziello@gmail.com> | 2025-07-19 11:35:11 -0300 |
| commit | d359c0af4874534efa810729d47f610a29687e93 (patch) | |
| tree | 9a89b06444819e7e5cef84aa826682b3b01bfd03 /TODO.md | |
| parent | 638244fd078fe91971e57b1d06e4499268d99c42 (diff) | |
| download | game-d359c0af4874534efa810729d47f610a29687e93.tar.gz game-d359c0af4874534efa810729d47f610a29687e93.zip | |
THREADING: upgrade from LinuxThreads to NPTL
This was a required change to make the server run on a modern
GLIBC version without resorting to shady shared libraries or
compatibility tricks. It is very straightforward but we should
always keep an eye out for possible bugs.
There was also a problem with the Z loop on field sending
functions that was causing the server to hang in an infinite
loop and should now be fixed.
With these changes it is now possible to login into the game
for a split second before the client asserting.
Diffstat (limited to 'TODO.md')
| -rw-r--r-- | TODO.md | 5 |
1 files changed, 0 insertions, 5 deletions
@@ -1,11 +1,6 @@ ## Synchronization I'm not sure whether synchronization is done properly. The implementation of the first few `crplayer.cc` functions left me with a taste of race conditions although integer loads on x86 are generally atomic. -## Threading -After some initial dive into `communication.cc`, it has become clear that the original codebase relied on `LinuxThreads` which, among its quirks, assigns different PIDs to different threads, explaining the usage of `getpid()`. It also seems it could lack automatically managed thread stacks which explains `CommunicationThreadStacks`. - -We'll have to address this BEFORE trying to run the server. - ## TODO (LEFTOVER) - Include `x == 0xFFFF` inside `CheckVisibility`? - The map container uses type id zero but it seems to also be used as a "no type" |
