Skip to content

20220607a

Compare
Choose a tag to compare
@GregUtas GregUtas released this 07 Jun 19:08
· 160 commits to master since this release
fca8e44

The focus was on testing the Linux target, which now seems stable.

NodeBase

  • Implement SysFile.GetLine for erasing the \r from endlines in files created on Windows but read on Linux.
  • Rename SysThreadStack to SysStackTrace.
  • Implement SysStackTrace.Demangle targets for Linux and Windows.
  • Implement SysThread.Pause so a thread can sleep while waiting for its Thread to finish construction.
  • Implement InitThread.RunningTicks as a rough monotonic clock that doesn't advance during restarts and breakpoints.
  • Exit a thread if it has run for ~1 second and its Thread still isn't finished construction.
  • Implement SlabHeap.Validate.
  • If RootThread will not initiate a restart on a scheduling timeout, limit it to one log every 3 seconds.
  • Fix bug: create ThreadRegistry before RootThread and add some missing mutexes when accessing its threads_ member.
  • Fix bug: if the platform quickly reused a native thread identifier, the new thread with that identifier failed to start because its identifier was still registered as deleted in ThreadRegistry.threads_.
  • Fix bug: don't invoke Destroy on a Thread that is marked deleting_.

NetworkBase

  • Deleting a socket does not unblock recvfrom on Linux, so have a UdpIoThread send itself a message to unblock when it wants to exit during a restart.

CodeTools

  • Remove the SourcePath directory from the file paths in >check output and change \ separators to /: this eliminates noise in diffs when a >check obtained on Windows is compared with one obtained on Linux.
  • Fix bug: when a name refers to a function, its interim referent wasn't updated after argument matching selected the correct function.
  • Fix bug: when setting an interim referent, prefer a non-static function to a static one: this adds an implicit this argument to the function call, which is needed to match with a non-static function, but which is ignored when matching with a static function.

Known deficiencies

  • The following recovery tests fail on Linux:

    • invoking std::terminate (currently a problem in Windows release builds as well)
    • trapping while handling an exception
    • trapping in a destructor
    • Ctrl-C to interrupt a thread

    The first three are because of the gcc compiler. The last one appears to be because WSL doesn't pass a Ctrl-C to the Linux console.

  • There are minor differences between >check and >export results obtained on Windows as opposed to Linux.

  • RscLauncher still hasn't been tested on Linux.