The faketime package in Ubuntu 16.04 is too old to know about `CLOCK_MONOTONIC_COARSE` but tor uses it. This causes startup to fail in the faketime library. Also if asan is active, its runtime must be listed first in `LD_PRELOAD`, which prevents using the normal faketime wrapper script.
The faketime package in Ubuntu 16.04 is too old to know about `CLOCK_MONOTONIC_COARSE` but tor uses it. This causes startup to fail in the faketime library. Also if asan is active, its runtime must be listed first in `LD_PRELOAD`, which prevents using the normal faketime wrapper script.
== Signs of client clock in the future ==
## Signs of client clock in the future
Stuck at 80% (Connecting to the Tor network) or 85% (Finishing handshake with first hop).
Stuck at 80% (Connecting to the Tor network) or 85% (Finishing handshake with first hop).
Repetitive logs such as
Repetitive logs such as
{{{
```
Sep 18 18:53:04.000 [debug] update_guard_selection_choice(): Staying with guard context "default" (no change)
Sep 18 18:53:04.000 [debug] update_guard_selection_choice(): Staying with guard context "default" (no change)
Sep 18 18:53:04.000 [info] sampled_guards_update_from_consensus(): Not updating the sample guard set; we have no live consensus.
Sep 18 18:53:04.000 [info] sampled_guards_update_from_consensus(): Not updating the sample guard set; we have no live consensus.
Sep 18 18:53:04.000 [info] sample_reachable_filtered_entry_guards(): Trying to sample a reachable guard: We know of 0 in the USABLE_FILTERED set.
Sep 18 18:53:04.000 [info] sample_reachable_filtered_entry_guards(): Trying to sample a reachable guard: We know of 0 in the USABLE_FILTERED set.
Sep 18 18:53:04.000 [info] sample_reachable_filtered_entry_guards(): (That isn't enough. Trying to expand the sample.)
Sep 18 18:53:04.000 [info] sample_reachable_filtered_entry_guards(): (That isn't enough. Trying to expand the sample.)
Sep 18 18:53:04.000 [info] entry_guards_expand_sample(): Not expanding the sample guard set; we have no live consensus.
Sep 18 18:53:04.000 [info] entry_guards_expand_sample(): Not expanding the sample guard set; we have no live consensus.
}}}
```
or
or
{{{
```
Sep 19 16:56:50.000 [info] sample_reachable_filtered_entry_guards(): Trying to sample a reachable guard: We know of 0 in the USABLE_FILTERED set.
Sep 19 16:56:50.000 [info] sample_reachable_filtered_entry_guards(): Trying to sample a reachable guard: We know of 0 in the USABLE_FILTERED set.
Sep 19 16:56:50.000 [info] sample_reachable_filtered_entry_guards(): (That isn't enough. Trying to expand the sample.)
Sep 19 16:56:50.000 [info] sample_reachable_filtered_entry_guards(): (That isn't enough. Trying to expand the sample.)
Sep 19 16:56:50.000 [info] entry_guards_expand_sample(): Not expanding the sample guard set; we have no live consensus.
Sep 19 16:56:50.000 [info] entry_guards_expand_sample(): Not expanding the sample guard set; we have no live consensus.
Sep 19 16:56:50.000 [info] select_entry_guard_for_circuit(): Absolutely no sampled guards were available. Marking all guards for retry and starting from top again.
Sep 19 16:56:50.000 [info] select_entry_guard_for_circuit(): Absolutely no sampled guards were available. Marking all guards for retry and starting from top again.
Sep 19 16:56:50.000 [warn] Failed to find node for hop #1 of our path. Discarding this circuit.
Sep 19 16:56:50.000 [warn] Failed to find node for hop #1 of our path. Discarding this circuit.
Sep 19 16:56:50.000 [info] onion_populate_cpath(): Generating cpath hop failed.
Sep 19 16:56:50.000 [info] onion_populate_cpath(): Generating cpath hop failed.
}}}
```
== GitLab and GitHub repo sync notes ==
## GitLab and GitHub repo sync notes
GitLab.com [https://gitlab.com/help/workflow/repository_mirroring.md supports] pull and push sync (one of each per repository). This needs an access token for push (at least over HTTPS; push mirroring over SSH doesn't seem to be supported). GitLab Community Edition doesn't support mirroring; that's an Enterprise Edition thing. It's possible to configure CI pipelines to do it, but it's somewhat less friendly. On the other hand, the built-in mirroring isn't configurable to force-update refs, which a custom pipeline would be able to do.
GitLab.com [supports](https://gitlab.com/help/workflow/repository_mirroring.md) pull and push sync (one of each per repository). This needs an access token for push (at least over HTTPS; push mirroring over SSH doesn't seem to be supported). GitLab Community Edition doesn't support mirroring; that's an Enterprise Edition thing. It's possible to configure CI pipelines to do it, but it's somewhat less friendly. On the other hand, the built-in mirroring isn't configurable to force-update refs, which a custom pipeline would be able to do.
=== Deploy keys, etc ===
### Deploy keys, etc
[https://gitlab.com/help/ssh/README.md#deploy-keys GitLab] and [https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys GitHub] both support SSH deploy keys. These default to read-only on GitLab, and read-write on GitHub. Deploy keys are per-repository.
[GitLab](https://gitlab.com/help/ssh/README.md#deploy-keys) and [GitHub](https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys) both support SSH deploy keys. These default to read-only on GitLab, and read-write on GitHub. Deploy keys are per-repository.
GitLab has [https://gitlab.com/help/api/README.md#private-tokens Private Tokens] and [https://gitlab.com/help/user/profile/personal_access_tokens.md Personal Access Tokens]. Private Tokens are for API use and supposedly allow full API access as you, but don't seem to provide push access over HTTPS. Access Tokens (with `api` scope) apparently do provide push access over HTTPS. GitHub doesn't have Private Tokens, but does have [https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/ Access Tokens].
GitLab has [Private Tokens](https://gitlab.com/help/api/README.md#private-tokens) and [Personal Access Tokens](https://gitlab.com/help/user/profile/personal_access_tokens.md). Private Tokens are for API use and supposedly allow full API access as you, but don't seem to provide push access over HTTPS. Access Tokens (with `api` scope) apparently do provide push access over HTTPS. GitHub doesn't have Private Tokens, but does have [Access Tokens](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/).