Merge branch 'bug31615_040' into bug31615_041

Merged modified lines from bug31615_040, and unmodified lines
from maint-0.4.1.
This commit is contained in:
teor 2019-09-10 08:43:13 +10:00
commit 7e22d99346
No known key found for this signature in database
GPG Key ID: 10FEAA0E7075672A
9 changed files with 40 additions and 18 deletions

5
changes/bug31615 Normal file
View File

@ -0,0 +1,5 @@
o Minor bugfixes (subsystems):
- Make the subsystem init order match the subsystem module dependencies.
Call windows process security APIs as early as possible. Init log before
network and time, so that network and time can use logging.
Fixes bug 31615; bugfix on 0.4.0.1-alpha.

View File

@ -32,23 +32,25 @@
/** /**
* Global list of the subsystems in Tor, in the order of their initialization. * Global list of the subsystems in Tor, in the order of their initialization.
* Want to know the exact level numbers?
* We'll implement a level dump command in #31614.
**/ **/
const subsys_fns_t *tor_subsystems[] = { const subsys_fns_t *tor_subsystems[] = {
&sys_winprocess, /* -100 */ &sys_winprocess,
&sys_torerr, /* -100 */ &sys_torerr,
&sys_wallclock, /* -99 */ &sys_wallclock,
&sys_threads, /* -95 */ &sys_threads,
&sys_logging, /* -90 */ &sys_logging,
&sys_time, /* -90 */ &sys_time,
&sys_network, /* -90 */ &sys_network,
&sys_compress, /* -70 */ &sys_compress,
&sys_crypto, /* -60 */ &sys_crypto,
&sys_tortls, /* -50 */ &sys_tortls,
&sys_process, /* -35 */ &sys_process,
&sys_orconn_event, /* -33 */ &sys_orconn_event,
&sys_ocirc_event, /* -32 */ &sys_ocirc_event,
&sys_btrack, /* -30 */ &sys_btrack,
&sys_mainloop, /* 5 */ &sys_mainloop, /* 5 */
&sys_or, /* 20 */ &sys_or, /* 20 */

View File

@ -33,7 +33,10 @@ subsys_torerr_shutdown(void)
const subsys_fns_t sys_torerr = { const subsys_fns_t sys_torerr = {
.name = "err", .name = "err",
.level = -100, /* Low-level error handling is a diagnostic feature, we want it to init
* right after windows process security, and shutdown last.
* (Security never shuts down.) */
.level = -99,
.supported = true, .supported = true,
.initialize = subsys_torerr_initialize, .initialize = subsys_torerr_initialize,
.shutdown = subsys_torerr_shutdown .shutdown = subsys_torerr_shutdown

View File

@ -29,6 +29,8 @@ subsys_logging_shutdown(void)
const subsys_fns_t sys_logging = { const subsys_fns_t sys_logging = {
.name = "log", .name = "log",
.supported = true, .supported = true,
/* Logging depends on threads, approx time, raw logging, and security.
* Most other lib modules depend on logging. */
.level = -90, .level = -90,
.initialize = subsys_logging_initialize, .initialize = subsys_logging_initialize,
.shutdown = subsys_logging_shutdown, .shutdown = subsys_logging_shutdown,

View File

@ -37,7 +37,9 @@ subsys_network_shutdown(void)
const subsys_fns_t sys_network = { const subsys_fns_t sys_network = {
.name = "network", .name = "network",
.level = -90, /* Network depends on logging, and a lot of other modules depend on network.
*/
.level = -80,
.supported = true, .supported = true,
.initialize = subsys_network_initialize, .initialize = subsys_network_initialize,
.shutdown = subsys_network_shutdown, .shutdown = subsys_network_shutdown,

View File

@ -58,6 +58,8 @@ subsys_winprocess_initialize(void)
const subsys_fns_t sys_winprocess = { const subsys_fns_t sys_winprocess = {
.name = "winprocess", .name = "winprocess",
/* HeapEnableTerminationOnCorruption and setdeppolicy() are security
* features, we want them to run first. */
.level = -100, .level = -100,
.supported = WINPROCESS_SYS_ENABLED, .supported = WINPROCESS_SYS_ENABLED,
.initialize = subsys_winprocess_initialize, .initialize = subsys_winprocess_initialize,

View File

@ -122,6 +122,8 @@ subsys_threads_initialize(void)
const subsys_fns_t sys_threads = { const subsys_fns_t sys_threads = {
.name = "threads", .name = "threads",
.supported = true, .supported = true,
/* Threads is used by logging, which is a diagnostic feature, we want it to
* init right after low-level error handling and approx time. */
.level = -95, .level = -95,
.initialize = subsys_threads_initialize, .initialize = subsys_threads_initialize,
}; };

View File

@ -20,7 +20,9 @@ subsys_time_initialize(void)
const subsys_fns_t sys_time = { const subsys_fns_t sys_time = {
.name = "time", .name = "time",
.level = -90, /* Monotonic time depends on logging, and a lot of other modules depend on
* monotonic time. */
.level = -80,
.supported = true, .supported = true,
.initialize = subsys_time_initialize, .initialize = subsys_time_initialize,
}; };

View File

@ -54,6 +54,8 @@ subsys_wallclock_initialize(void)
const subsys_fns_t sys_wallclock = { const subsys_fns_t sys_wallclock = {
.name = "wallclock", .name = "wallclock",
.supported = true, .supported = true,
.level = -99, /* Approximate time is a diagnostic feature, we want it to init right after
* low-level error handling. */
.level = -98,
.initialize = subsys_wallclock_initialize, .initialize = subsys_wallclock_initialize,
}; };