bitshares / bitshares/bitshares-core
Compiler warning: objects of type `fc::optional` may be used uninitialized
- Dominant language
- C++
- Stars
- 1.2k
- Forks
- 660
- Avg merge
- 8h 17m
- Merged PRs (30d)
- 26
Description
**Build Error Description**
Also reported in https://github.com/bitshares/bitshares-core/issues/2348.
```
/bitshares-core/libraries/protocol/fee_schedule_calc.cpp: In member function ‘graphene::protocol::calc_fee_visitor::result_type graphene::protocol::calc_fee_visitor::operator()(const OpType&) const [with OpType = graphene::protocol::asset_create_operation; graphene::protocol::calc_fee_visitor::result_type = long unsigned int]’:
/bitshares-core/libraries/protocol/fee_schedule_calc.cpp:70:26: warning: ‘sub_asset_creation_fee’ may be used uninitialized in this function [-Wmaybe-uninitialized]
optional sub_asset_creation_fee;
^
```
```
In file included from /bitshares-core/tests/tests/operation_tests.cpp:43:0:
/bitshares-core/tests/tests/../common/database_fixture.hpp: In member function ‘void operation_tests::update_uia::test_method()’:
/bitshares-core/tests/tests/../common/database_fixture.hpp:148:9: warning: ‘bak.fc::optional >::_value[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
auto bak = op.field; \
^~~
/bitshares-core/tests/tests/../common/database_fixture.hpp:148:9: note: ‘bak.fc::optional >::_value[0]’ was declared here
auto bak = op.field; \
^
/bitshares-core/tests/tests/../common/database_fixture.hpp:148:9: note: in definition of macro ‘REQUIRE_THROW_WITH_VALUE_2’
auto bak = op.field; \
^~~
/bitshares-core/tests/tests/operation_tests.cpp:1758:7: note: in expansion of macro ‘REQUIRE_THROW_WITH_VALUE’
REQUIRE_THROW_WITH_VALUE(op, new_issuer, test.issuer);
^
```
```
In file included from /home/ubuntu/bitshares-core-dev/libraries/fc/include/fc/variant_object.hpp:2:0,
from /home/ubuntu/bitshares-core-dev/libraries/fc/include/fc/log/log_message.hpp:8,
from /home/ubuntu/bitshares-core-dev/libraries/fc/include/fc/log/logger.hpp:5,
from /home/ubuntu/bitshares-core-dev/libraries/fc/include/fc/exception/exception.hpp:6,
from /home/ubuntu/bitshares-core-dev/libraries/fc/include/fc/safe.hpp:2,
from /home/ubuntu/bitshares-core-dev/libraries/fc/include/fc/io/raw_fwd.hpp:7,
from /home/ubuntu/bitshares-core-dev/libraries/fc/include/fc/io/enum_type.hpp:3,
from /home/ubuntu/bitshares-core-dev/libraries/protocol/include/graphene/protocol/types.hpp:42,
from /home/ubuntu/bitshares-core-dev/libraries/chain/include/graphene/chain/types.hpp:26,
from /home/ubuntu/bitshares-core-dev/libraries/chain/include/graphene/chain/account_object.hpp:26,
from /home/ubuntu/bitshares-core-dev/libraries/chain/market_evaluator.cpp:24:
/home/ubuntu/bitshares-core-dev/libraries/fc/include/fc/variant.hpp: In member function ‘graphene::db::object_id_type graphene::chain::call_order_update_evaluator::do_apply(const graphene::protocol::call_order_update_operation&)’:
/home/ubuntu/bitshares-core-dev/libraries/fc/include/fc/variant.hpp:634:17: warning: ‘old_debt.fc::safe::value’ may be used uninitialized in this function [-Wmaybe-uninitialized]
to_variant( static_cast(s.value), v, max_depth );
^
/home/ubuntu/bitshares-core-dev/libraries/chain/market_evaluator.cpp:316:25: note: ‘old_debt.fc::safe::value’ was declared here
optional old_debt;
^
```
**Build Environment**
Details about the build environment, including the relevant required libraries. Much of this information can be found in the `CMakeFiles/CMakeOutput.log`.
- Host OS: [Ubuntu 18.04 / 16.04 LTS]
- Host Physical RAM -
- Source Branch/Tag: 5.2.1
- OpenSSL Version: 1.1.1 / 1.0.2
- Boost Version: 1.65.1 / 1.58
- C++ Compiler: gcc version 7.5.0 / 5.4.0
## CORE TEAM TASK LIST
- [ ] Evaluate `Build Error`
- [ ] Provide build guidance
- [ ] Create `Bug Report`
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reproducing the GCC warnings on the stated 5.2.1 branch and inspect libraries/protocol/fee_schedule_calc.cpp, tests/common/database_fixture.hpp, tests/tests/operation_tests.cpp, and libraries/chain/market_evaluator.cpp. Determine whether each warning reflects a real uninitialized-value path or a compiler false positive, then document the findings and verify the build result.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- build-system, compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100