diff options
-rw-r--r-- | changes/bug23753 | 4 | ||||
-rw-r--r-- | src/or/scheduler.c | 2 | ||||
-rw-r--r-- | src/or/scheduler_kist.c | 8 |
3 files changed, 9 insertions, 5 deletions
diff --git a/changes/bug23753 b/changes/bug23753 new file mode 100644 index 0000000000..8782a8e2d0 --- /dev/null +++ b/changes/bug23753 @@ -0,0 +1,4 @@ + o Minor features (logging, scheduler): + - Introduce a SCHED_BUG() function to log extra information about the + scheduler state if we ever catch a bug in the scheduler. Closes ticket + 23753. diff --git a/src/or/scheduler.c b/src/or/scheduler.c index c656c80e9c..67911ff81e 100644 --- a/src/or/scheduler.c +++ b/src/or/scheduler.c @@ -607,7 +607,7 @@ scheduler_release_channel,(channel_t *chan)) } if (chan->scheduler_state == SCHED_CHAN_PENDING) { - if (smartlist_pos(channels_pending, chan) == -1) { + if (SCHED_BUG(smartlist_pos(channels_pending, chan) == -1, chan)) { log_warn(LD_SCHED, "Scheduler asked to release channel %" PRIu64 " " "but it wasn't in channels_pending", chan->global_identifier); diff --git a/src/or/scheduler_kist.c b/src/or/scheduler_kist.c index d269fb49b8..ea6910c702 100644 --- a/src/or/scheduler_kist.c +++ b/src/or/scheduler_kist.c @@ -116,7 +116,7 @@ channel_outbuf_length(channel_t *chan) /* In theory, this can not happen because we can not scheduler a channel * without a connection that has its outbuf initialized. Just in case, bug * on this so we can understand a bit more why it happened. */ - if (BUG(BASE_CHAN_TO_TLS(chan)->conn == NULL)) { + if (SCHED_BUG(BASE_CHAN_TO_TLS(chan)->conn == NULL, chan)) { return 0; } return buf_datalen(TO_CONN(BASE_CHAN_TO_TLS(chan)->conn)->outbuf); @@ -370,7 +370,7 @@ socket_can_write(socket_table_t *table, const channel_t *chan) { socket_table_ent_t *ent = NULL; ent = socket_table_search(table, chan); - IF_BUG_ONCE(!ent) { + if (SCHED_BUG(!ent, chan)) { return 1; // Just return true, saying that kist wouldn't limit the socket } @@ -390,7 +390,7 @@ update_socket_info(socket_table_t *table, const channel_t *chan) { socket_table_ent_t *ent = NULL; ent = socket_table_search(table, chan); - IF_BUG_ONCE(!ent) { + if (SCHED_BUG(!ent, chan)) { return; // Whelp. Entry didn't exist for some reason so nothing to do. } update_socket_info_impl(ent); @@ -402,7 +402,7 @@ update_socket_written(socket_table_t *table, channel_t *chan, size_t bytes) { socket_table_ent_t *ent = NULL; ent = socket_table_search(table, chan); - IF_BUG_ONCE(!ent) { + if (SCHED_BUG(!ent, chan)) { return; // Whelp. Entry didn't exist so nothing to do. } |