| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
| |
Update tools: yexport
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
https://paste.yandex-team.ru/804bf63f-d433-481e-945b-b555fb15be21
не светилось на CI'ных сборках.
Разбираться с автосборкой будут в
|
|
|
|
| |
to have heap allocations when joining ints to string
|
|
|
| |
Update tools: yexport
|
| |
|
| |
|
| |
|
| |
|
|
|
| |
Update tools: yexport
|
| |
|
| |
|
|
|
| |
К сожалению, люди успели наплодить переменных и методов c именами i64(), ui64(), поэтому для генеренного кода проще всего оказалось завести несколько type alias arc_ui64 -> ui64, и так далее.
|
| |
|
| |
|
|
|
| |
Update tools: yexport
|
| |
|
|
|
|
| |
TStringBuf (with &&)
|
|
|
| |
Update tools: yexport
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
By [RFC3629 section 3](https://datatracker.ietf.org/doc/html/rfc3629#section-3):
```
The definition of UTF-8 prohibits encoding character numbers between
U+D800 and U+DFFF, which are reserved for use with the UTF-16
encoding form (as surrogate pairs) and do not directly represent characters.
```
Current implementation of `ReadUTF8CharAndAdvance` allows `UTF-8` encoded surrogate characters
like 0xED 0xA0 0xBD or 0xED 0xB3 0x9A leaving them in the strings
that cannot be processed afterwards by external programs like `iconv`.
This patch provides `strict` template flag that disables this leniency.
This flag is not enabled by default, because Arcadia already has hundreds of
tests with inputs containing such surrogate pairs and these tests breaks in strict mode
and there is a chance that prod might affected too.
SSE4 implementation doesn't perform any validation at all, so it is left unchanged.
|
|
|
|
|
|
| |
По следам https://a.yandex-team.ru/review/2996409/details
Исправлены случаи при неудачных кастах:
1. контрольный блок дёргается даже при указании на nullptr (нехорошо для атомиков)
2. если исходный шаред поинтер разрушится раньше, чем полученный nullptr (например, при возврате из функции), то ресурс утечёт
|
|
|
|
| |
returning double value
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
- don't hide epoll_ctl add errors;
- print "fd" and "what" args.
|
|
|
|
|
| |
Контекст. В древнем странном коде обнаружили, что если создавать `TThreadPool` часто и конкуретно с запуском `TShellCommand`, то иногда последняя дедлочится: если начали выполнять конструктор `TThreadPool` и регистрацию в `TAtforkQueueRestarter`, захватив `TAtforkQueueRestarter::ActionMutex`, а в другом потоке параллельно сделали `fork`, то последний может форкнуться с залоченым мьютексом. Первым делом происходит вызов коллбеков из `pthread_atfork`, где мьютекс лочится заново.
Конечно, форкаться в сложных программах с тредпулами категорически запрещено, но, подозреваю, много кода в аркадии так написано. Давайте как-то защитимся от такого.
|
| |
|
| |
|
|
|
| |
`#define noexcept throw()` is a questionable idea, since replacing `noexcept` with `throw()` in expressions such as `noexcept(true)` results in spectacular compiler errors. We stopped supporting CUDA 8 (and even CUDA 9) long ago, which means we can just get rid of the problematic define.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
nvcc10.1 is unable to compile `[[clang::reinitializes]]` and issues warning as follows:
```
util/generic/ptr.h(194): warning: attribute namespace "clang" is unrecognized
util/generic/ptr.h(201): warning: attribute namespace "clang" is unrecognized
[...]
```
nvcc11 compiles this code without any warnings.
This PRs disable `[[clang::reinitialized]]` when compiling with nvcc10.
|
| |
|
| |
|
| |
|
|
|
| |
Update tools: yexport
|
|
|
| |
https://clubs.at.yandex-team.ru/arcadia/8450/8489#reply-arcadia-8489
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For example, https://github.com/google/sanitizers/issues/1352 - tsan is not working well with std::atomic_thread_fence
Minimal reproducible example (and one that bothers most in every fiber-aware service):
```
auto threadPool = NYT::New<NYT::NConcurrency::TThreadPool>(2, "thread");
TVector<NYT::TFuture<void>> futures;
for (size_t i = 0; i < 100000; ++i) {
futures.emplace_back(BIND([]() {
}).AsyncVia(threadPool->GetInvoker()).Run());
}
for (auto& future : futures) {
future.Get().ThrowOnError();
}
```
|
| |
|
| |
|
| |
|
| |
|
| |
|