[Bug 3585] New: recursive error after server disconnect

bugzilla-daemon at icculus.org bugzilla-daemon at icculus.org
Sun Mar 30 11:18:47 EDT 2008


http://bugzilla.icculus.org/show_bug.cgi?id=3585

           Summary: recursive error after server disconnect
           Product: Quake 3
           Version: SVN HEAD
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P3
         Component: Misc
        AssignedTo: zakk at icculus.org
        ReportedBy: devhc97 at gmail.com
         QAContact: quake3-bugzilla at icculus.org


There's some bad behaviour introduced in r1274. When a server stops serving,
all r1274+ clients will suffer a recursive error, a soft crash. Here's a
technical description:

- ioq3, svn head, etc. is connected to a remote server
- the server decides to do a /disconnect or a /quit

- inside a normal VM_Call() to cgame...
- in the snapshot functions, CG_ExecuteNewServerCommands() handles every
reliable server command
- for each, trap_GetServerCommand() is called
- which, through the syscall callback code, turns into a call to
CL_GetServerCommand()
- that function recognizes the "disconnect" server command, and executes
Com_Error() with ERR_SERVERDISCONNECT (note: com_errorEntered is set to true)
- in that sutiation, CL_FlushMemory() is called
- we don't have a server running, so we do a Hunk_Clear()
- there, VM_Clear() clears all the VMs via VM_Free()
- since the cgame is still running (vm->callLevel > 0), Com_Error() is called
again, this time with ERR_FATAL
- that's our second error so far (com_errorEntered is true), so Sys_Error()
shuts down the program


-- 
Configure bugmail: http://bugzilla.icculus.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.



More information about the quake3-bugzilla mailing list