abseil / abseil/abseil-cpp

[Bug]: Make absl::InitializeLog safe to be called multiple times

Aberta
#1,656 7 comentários 7 reações 0 responsáveis Ver no GitHub
Linguagem predominante
C++
Estrelas
18.1k
Forks
3.2k
Merge médio
20h 36min
PRs com merge (30d)
1

Descrição

### Describe the issue

I don't really use `absl::log`, but a library I depend on uses it. It logs a bunch of "garbage" (unrelated to my project) that appears on the stderr. It includes the message:

```
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
```

Now I'm adding an earlier call in my program to `absl::InitializeLog()` in an attempt to eliminate the noise. But I noticed the library I use also eventually calls `absl::InitializeLog()`.

Checking the documentation of `absl::InitializeLog` it's an error to call it more than once.

More generically, a project and one or more of its dependencies may need to call `absl::InitializeLog`, and there is no way to coordinate this across completely independent libraries -- ideally, libraries should never call it but ... it happens -- see [Google's XLA](https://github.com/openxla/xla/blob/6a257dc8805d11c11d25de557dadcb4e248d0849/xla/pjrt/c/pjrt_c_api_gpu.cc#L27C1-L29C1) as an example.

Hence my bug/feature request to make `InitializeLog` safe to be called multiple times -- a no-op if it has already been called.

ps.: I'm no expert on `absl` library, it's very likely there is nuance I'm missing.

### Steps to reproduce the problem

Use two libraries where both call `absl::InitializeLog()`

### What version of Abseil are you using?

Head.

### What operating system and version are you using?

Ubuntu, various versions.

### What compiler and version are you using?

clang

### What build system are you using?

bazel

### Additional context

_No response_

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.