abseil / abseil/abseil-cpp

[Bug]: Uninitialized value in AnyInvocable.

未關閉
#1,693 0 則留言 1 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
C++
星號
18.1k
分支
3.2k
平均合併
20 小時 36 分鐘
30 天內合併 PR
1

描述

### Describe the issue

Uninitialized value in AnyInvocable.

### Steps to reproduce the problem

When move from one instance of AnyInvocable to another, GCC v 12+ with -O2 or more and -Wall complains about uninitialized value used.
Example: https://godbolt.org/z/c4KMhcYcc
If change to -O1 - warning disappear.

```
In file included from /opt/compiler-explorer/libs/abseil/absl/functional/any_invocable.h:43,
from :1:
In function 'void absl::internal_any_invocable::LocalManagerTrivial(FunctionToCall, TypeErasedState*, TypeErasedState*)',
inlined from 'absl::internal_any_invocable::CoreImpl::CoreImpl(absl::internal_any_invocable::CoreImpl&&) [with bool SigIsNoexcept = false; ReturnType = void; P = {}]' at /opt/compiler-explorer/libs/abseil/absl/functional/internal/any_invocable.h:481:11,
inlined from 'absl::internal_any_invocable::Impl::Impl(absl::internal_any_invocable::Impl&&)' at /opt/compiler-explorer/libs/abseil/absl/functional/internal/any_invocable.h:868:1,
inlined from 'absl::AnyInvocable::AnyInvocable(absl::AnyInvocable&&) [with Sig = void()]' at /opt/compiler-explorer/libs/abseil/absl/functional/any_invocable.h:184:3,
inlined from 'int main()' at :7:49:
/opt/compiler-explorer/libs/abseil/absl/functional/internal/any_invocable.h:266:7: warning: 'fn.absl::AnyInvocable::.absl::internal_any_invocable::Impl::.absl::internal_any_invocable::CoreImpl::state_' is used uninitialized [-Wuninitialized]
266 | *to = *from;
| ~~~~^~~~~~~
: In function 'int main()':
:6:32: note: 'fn' declared here
6 | absl::AnyInvocable fn{[](){ std::cout << "test\n"; }};
| ^~
ASM generation compiler returned: 0
In file included from /opt/compiler-explorer/libs/abseil/absl/functional/any_invocable.h:43,
from :1:
In function 'void absl::internal_any_invocable::LocalManagerTrivial(FunctionToCall, TypeErasedState*, TypeErasedState*)',
inlined from 'absl::internal_any_invocable::CoreImpl::CoreImpl(absl::internal_any_invocable::CoreImpl&&) [with bool SigIsNoexcept = false; ReturnType = void; P = {}]' at /opt/compiler-explorer/libs/abseil/absl/functional/internal/any_invocable.h:481:11,
inlined from 'absl::internal_any_invocable::Impl::Impl(absl::internal_any_invocable::Impl&&)' at /opt/compiler-explorer/libs/abseil/absl/functional/internal/any_invocable.h:868:1,
inlined from 'absl::AnyInvocable::AnyInvocable(absl::AnyInvocable&&) [with Sig = void()]' at /opt/compiler-explorer/libs/abseil/absl/functional/any_invocable.h:184:3,
inlined from 'int main()' at :7:49:
/opt/compiler-explorer/libs/abseil/absl/functional/internal/any_invocable.h:266:7: warning: 'fn.absl::AnyInvocable::.absl::internal_any_invocable::Impl::.absl::internal_any_invocable::CoreImpl::state_' is used uninitialized [-Wuninitialized]
266 | *to = *from;
| ~~~~^~~~~~~
: In function 'int main()':
:6:32: note: 'fn' declared here
6 | absl::AnyInvocable fn{[](){ std::cout << "test\n"; }};
|
```

### What version of Abseil are you using?

latest from git

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

linux

### What compiler and version are you using?

gcc v 12.1

### What build system are you using?

none

### Additional context

_No response_

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。