I did 2 commits to the trunk development branch and to branches/2.2.

The commits are meant to address the occasional child process crash upon interpreter deletion and to cope with the issues related to the side effects of the [::exit] command.

The proposed solution was to introduce the new command [::rivet::exit] which actually behaves like a special form of [::rivet::abort_page].

[::rivet::exit] sets the thread/processes internal status and before returning to the framework Tcl_Exit is called (with the worker MPM threads are required to exit before Tcl_Exit is called). The manual page for this new command puts an emphasis to the fact that extensive usage is deprecated and it's kept there just to give [::exit] a gentle behavior in mod_rivet's environment. The core command [exit] is renamed and replaced by a new Tcl scripts that wraps ::rivet::exit. The command accepts an optional argument with integer value.

Also ::rivet::catch was introduced.
::rivet::catch wraps Tcl core's catch command and checks if the error was caused by ::rivet::exit or ::rivet::abort_page. In case execution is interrupted and handed down to AbortScript.

Both these commands are not exported when Tcl is build with --enable-rivet-commands-export (default).

The way commands were exported in mod_rivet was wrong and has been fixed: we now can selectively export commands from the ::rivet namespace

 -- Massimo

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to