Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add missing was_loaded initialization #70668

Merged
merged 3 commits into from
Jan 6, 2024

Conversation

hexagonrecursion
Copy link
Contributor

@hexagonrecursion hexagonrecursion commented Jan 5, 2024

Summary

None

Purpose of change

We forgot to initialize was_loaded in profession_group

I found this bug thanks to UndefinedBehaviorSanitizer

src/profession_group.h:8:8: runtime error: load of value 60, which is not a valid value for type 'bool'
    #0 0x6fa4312 in profession_group::profession_group(profession_group const&) src/profession_group.h:8
    #1 0x6fb241e in void std::__new_allocator<profession_group>::construct<profession_group, profession_group const&>(profession_group*, profession_group const&) /usr/include/c++/13/bits/new_allocator.h:187
    #2 0x6fb241e in void std::allocator_traits<std::allocator<profession_group> >::construct<profession_group, profession_group const&>(std::allocator<profession_group>&, profession_group*, profession_group const&) /usr/include/c++/13/bits/alloc_traits.h:537
    #3 0x6fb241e in void std::vector<profession_group, std::allocator<profession_group> >::_M_realloc_insert<profession_group const&>(__gnu_cxx::__normal_iterator<profession_group*, std::vector<profession_group, std::allocator<profession_group> > >, profession_group const&) /usr/include/c++/13/bits/vector.tcc:468
    #4 0x6fb2911 in std::vector<profession_group, std::allocator<profession_group> >::push_back(profession_group const&) /usr/include/c++/13/bits/stl_vector.h:1289
    #5 0x6fb2c14 in generic_factory<profession_group>::insert(profession_group const&) src/generic_factory.h:391
    #6 0x6fb61a7 in generic_factory<profession_group>::load(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/generic_factory.h:304
    #7 0x6fa0efd in profession_group::load_profession_group(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/profession_group.cpp:25
    #8 0x4294940 in void std::__invoke_impl<void, void (*&)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__invoke_other, void (*&)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/13/bits/invoke.h:61
    #9 0x4294976 in std::enable_if<is_invocable_r_v<void, void (*&)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, void>::type std::__invoke_r<void, void (*&)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(void (*&)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/13/bits/invoke.h:111
    #10 0x4294976 in std::_Function_handler<void (JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), void (*)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::_M_invoke(std::_Any_data const&, JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/13/bits/std_function.h:290
    #11 0x4290c79 in std::function<void (JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::operator()(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const /usr/include/c++/13/bits/std_function.h:591
    #12 0x426934f in operator() src/init.cpp:227
    #13 0x426934f in __invoke_impl<void, DynamicDataLoader::add(const std::string&, const std::function<void(const JsonObject&, const std::__cxx11::basic_string<char>&)>&)::<lambda(const JsonObject&, const std::string&, const cata_path&, const cata_path&)>&, const JsonObject&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const cata_path&, const cata_path&> /usr/include/c++/13/bits/invoke.h:61
    #14 0x426934f in __invoke_r<void, DynamicDataLoader::add(const std::string&, const std::function<void(const JsonObject&, const std::__cxx11::basic_string<char>&)>&)::<lambda(const JsonObject&, const std::string&, const cata_path&, const cata_path&)>&, const JsonObject&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const cata_path&, const cata_path&> /usr/include/c++/13/bits/invoke.h:111
    #15 0x426934f in _M_invoke /usr/include/c++/13/bits/std_function.h:290
    #16 0x42904f3 in std::function<void (JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cata_path const&, cata_path const&)>::operator()(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cata_path const&, cata_path const&) const /usr/include/c++/13/bits/std_function.h:591
    #17 0x4284949 in DynamicDataLoader::load_object(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cata_path const&, cata_path const&) src/init.cpp:137
    #18 0x4285c32 in DynamicDataLoader::load_all_from_json(JsonValue const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, loading_ui&, cata_path const&, cata_path const&) src/init.cpp:540
    #19 0x4286744 in DynamicDataLoader::load_data_from_path(cata_path const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, loading_ui&) src/init.cpp:521
    #20 0x3ca25fa in game::load_data_from_dir(cata_path const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, loading_ui&) src/game.cpp:571
    #21 0x3d21130 in game::load_packs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<string_id<MOD_INFORMATION>, std::allocator<string_id<MOD_INFORMATION> > > const&, loading_ui&) src/game.cpp:3265
    #22 0x3d518b5 in game::load_world_modfiles(loading_ui&) src/game.cpp:3235
    #23 0x3e055d0 in game::setup() src/game.cpp:756
    #24 0x5111cc3 in main_menu::new_character_tab() src/main_menu.cpp:972
    #25 0x5127aea in main_menu::opening_screen() src/main_menu.cpp:863
    #26 0x50f1e5e in main src/main.cpp:792
    #27 0x7f7a489cfb89 in __libc_start_call_main (/lib64/libc.so.6+0x27b89) (BuildId: f888be5f5e7d58e04cabb8c675c7ab94e77dd68c)
    #28 0x7f7a489cfc4a in __libc_start_main_alias_2 (/lib64/libc.so.6+0x27c4a) (BuildId: f888be5f5e7d58e04cabb8c675c7ab94e77dd68c)
    #29 0x1bec804 in _start (/home/cdda/git/Cataclysm-DDA/cataclysm-tiles+0x1bec804) (BuildId: 1a0225eb0946b150a1f9b1759d512b53fde7f1d0)

Describe the solution

Initialize was_loaded in the struct definition. This appears to be consistent with what we usually do with was_loaded.

TODO: open the next pull request after this one is merged

We forgot to initialize was_loaded in profession_group

I found this bug thanks to UndefinedBehaviorSanitizer
```c++
src/profession_group.h:8:8: runtime error: load of value 60, which is not a valid value for type 'bool'
    #0 0x6fa4312 in profession_group::profession_group(profession_group const&) src/profession_group.h:8
    #1 0x6fb241e in void std::__new_allocator<profession_group>::construct<profession_group, profession_group const&>(profession_group*, profession_group const&) /usr/include/c++/13/bits/new_allocator.h:187
    #2 0x6fb241e in void std::allocator_traits<std::allocator<profession_group> >::construct<profession_group, profession_group const&>(std::allocator<profession_group>&, profession_group*, profession_group const&) /usr/include/c++/13/bits/alloc_traits.h:537
    #3 0x6fb241e in void std::vector<profession_group, std::allocator<profession_group> >::_M_realloc_insert<profession_group const&>(__gnu_cxx::__normal_iterator<profession_group*, std::vector<profession_group, std::allocator<profession_group> > >, profession_group const&) /usr/include/c++/13/bits/vector.tcc:468
    CleverRaven#4 0x6fb2911 in std::vector<profession_group, std::allocator<profession_group> >::push_back(profession_group const&) /usr/include/c++/13/bits/stl_vector.h:1289
    CleverRaven#5 0x6fb2c14 in generic_factory<profession_group>::insert(profession_group const&) src/generic_factory.h:391
    CleverRaven#6 0x6fb61a7 in generic_factory<profession_group>::load(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/generic_factory.h:304
    CleverRaven#7 0x6fa0efd in profession_group::load_profession_group(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/profession_group.cpp:25
    CleverRaven#8 0x4294940 in void std::__invoke_impl<void, void (*&)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__invoke_other, void (*&)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/13/bits/invoke.h:61
    CleverRaven#9 0x4294976 in std::enable_if<is_invocable_r_v<void, void (*&)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, void>::type std::__invoke_r<void, void (*&)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(void (*&)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/13/bits/invoke.h:111
    CleverRaven#10 0x4294976 in std::_Function_handler<void (JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), void (*)(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::_M_invoke(std::_Any_data const&, JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/13/bits/std_function.h:290
    CleverRaven#11 0x4290c79 in std::function<void (JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::operator()(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const /usr/include/c++/13/bits/std_function.h:591
    CleverRaven#12 0x426934f in operator() src/init.cpp:227
    CleverRaven#13 0x426934f in __invoke_impl<void, DynamicDataLoader::add(const std::string&, const std::function<void(const JsonObject&, const std::__cxx11::basic_string<char>&)>&)::<lambda(const JsonObject&, const std::string&, const cata_path&, const cata_path&)>&, const JsonObject&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const cata_path&, const cata_path&> /usr/include/c++/13/bits/invoke.h:61
    CleverRaven#14 0x426934f in __invoke_r<void, DynamicDataLoader::add(const std::string&, const std::function<void(const JsonObject&, const std::__cxx11::basic_string<char>&)>&)::<lambda(const JsonObject&, const std::string&, const cata_path&, const cata_path&)>&, const JsonObject&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const cata_path&, const cata_path&> /usr/include/c++/13/bits/invoke.h:111
    CleverRaven#15 0x426934f in _M_invoke /usr/include/c++/13/bits/std_function.h:290
    CleverRaven#16 0x42904f3 in std::function<void (JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cata_path const&, cata_path const&)>::operator()(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cata_path const&, cata_path const&) const /usr/include/c++/13/bits/std_function.h:591
    CleverRaven#17 0x4284949 in DynamicDataLoader::load_object(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cata_path const&, cata_path const&) src/init.cpp:137
    CleverRaven#18 0x4285c32 in DynamicDataLoader::load_all_from_json(JsonValue const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, loading_ui&, cata_path const&, cata_path const&) src/init.cpp:540
    CleverRaven#19 0x4286744 in DynamicDataLoader::load_data_from_path(cata_path const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, loading_ui&) src/init.cpp:521
    CleverRaven#20 0x3ca25fa in game::load_data_from_dir(cata_path const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, loading_ui&) src/game.cpp:571
    CleverRaven#21 0x3d21130 in game::load_packs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<string_id<MOD_INFORMATION>, std::allocator<string_id<MOD_INFORMATION> > > const&, loading_ui&) src/game.cpp:3265
    CleverRaven#22 0x3d518b5 in game::load_world_modfiles(loading_ui&) src/game.cpp:3235
    CleverRaven#23 0x3e055d0 in game::setup() src/game.cpp:756
    CleverRaven#24 0x5111cc3 in main_menu::new_character_tab() src/main_menu.cpp:972
    CleverRaven#25 0x5127aea in main_menu::opening_screen() src/main_menu.cpp:863
    CleverRaven#26 0x50f1e5e in main src/main.cpp:792
    CleverRaven#27 0x7f7a489cfb89 in __libc_start_call_main (/lib64/libc.so.6+0x27b89) (BuildId: f888be5f5e7d58e04cabb8c675c7ab94e77dd68c)
    CleverRaven#28 0x7f7a489cfc4a in __libc_start_main_alias_2 (/lib64/libc.so.6+0x27c4a) (BuildId: f888be5f5e7d58e04cabb8c675c7ab94e77dd68c)
    CleverRaven#29 0x1bec804 in _start (/home/cdda/git/Cataclysm-DDA/cataclysm-tiles+0x1bec804) (BuildId: 1a0225eb0946b150a1f9b1759d512b53fde7f1d0)
```
@github-actions github-actions bot added Mutations / Traits / Professions/ Hobbies Mutations / Traits / Professions/ Hobbies [C++] Changes (can be) made in C++. Previously named `Code` json-styled JSON lint passed, label assigned by github actions astyled astyled PR, label is assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions labels Jan 5, 2024
@github-actions github-actions bot added Map / Mapgen Overmap, Mapgen, Map extras, Map display Code: Tests Measurement, self-control, statistics, balancing. labels Jan 5, 2024
@hexagonrecursion
Copy link
Contributor Author

hexagonrecursion commented Jan 5, 2024

I executed CI three times and every time overmap_terrain_coverage failed. It appears the test is inherently random - sometimes it just fails. Expanding the search radius should hopefully make it fail less often.

https://github.com/CleverRaven/Cataclysm-DDA/actions/runs/7419621238/job/20189476520?pr=70668
https://github.com/CleverRaven/Cataclysm-DDA/actions/runs/7420977510/job/20193402881?pr=70668
https://github.com/CleverRaven/Cataclysm-DDA/actions/runs/7421855916/job/20196048177

In case github deletes the logs:
logs_1009568.zip
logs_1009249.zip
logs_1009641.zip

Mods-([slow] ~starting_items)=> cata_test is a Catch v2.13.7 host application.
Mods-([slow] ~starting_items)=> Run with -? for options
Mods-([slow] ~starting_items)=> 
Mods-([slow] ~starting_items)=> Randomness seeded to: 1704449345
Mods-([slow] ~starting_items)=> 
Mods-([slow] ~starting_items)=> -------------------------------------------------------------------------------
Mods-([slow] ~starting_items)=> overmap_terrain_coverage
Mods-([slow] ~starting_items)=> -------------------------------------------------------------------------------
Mods-([slow] ~starting_items)=> ../tests/overmap_test.cpp:287
Mods-([slow] ~starting_items)=> ...............................................................................
Mods-([slow] ~starting_items)=> 
Mods-([slow] ~starting_items)=> ../tests/overmap_test.cpp:416: FAILED:
Mods-([slow] ~starting_items)=>   CHECK( num_missing == 0 )
Mods-([slow] ~starting_items)=> with expansion:
Error: Mods-([slow] ~starting_items)=>   27 == 0
Mods-([slow] ~starting_items)=> with messages:
Mods-([slow] ~starting_items)=>   num_missing := 27
Mods-([slow] ~starting_items)=>   missing_oter_type_ids := "karting_0_0_0, karting_0_0_1, karting_0_0_2,
Mods-([slow] ~starting_items)=>   karting_0_1_0, karting_0_1_1, karting_0_1_2, karting_0_2_0, karting_0_2_1,
Mods-([slow] ~starting_items)=>   karting_0_2_2, karting_1_0_0, karting_1_0_1, karting_1_0_2, karting_1_1_0,
Mods-([slow] ~starting_items)=>   karting_1_1_1, karting_1_1_2, karting_1_2_0, karting_1_2_1, karting_1_2_2,
Mods-([slow] ~starting_items)=>   karting_2_0_0, karting_2_0_1, karting_2_0_2, karting_2_1_0, karting_2_1_1,
Mods-([slow] ~starting_items)=>   karting_2_1_2, karting_2_2_0, karting_2_2_1, and karting_2_2_2"
Mods-([slow] ~starting_items)=>   To resolve errors about missing terrains you can either give the terrain the
Mods-([slow] ~starting_items)=>   SHOULD_NOT_SPAWN flag (intended for terrains that should never spawn, for
Mods-([slow] ~starting_items)=>   example test terrains or work in progress), or tweak the constraints so that
Mods-([slow] ~starting_items)=>   the terrain can spawn more reliably, or add them to the whitelist above in
Mods-([slow] ~starting_items)=>   this function (inteded for terrains that sometimes spawn, but cannot be
Mods-([slow] ~starting_items)=>   expected to spawn reliably enough for this test)
Mods-([slow] ~starting_items)=> 
Mods-([slow] ~starting_items)=> Log messages during failed test:
Mods-([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
Mods-([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
Mods-([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
Mods-([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
Mods-([slow] ~starting_items)=> 847.011 s: overmap_terrain_coverage
([slow] ~starting_items)=> cata_test is a Catch v2.13.7 host application.
([slow] ~starting_items)=> Run with -? for options
([slow] ~starting_items)=> 
([slow] ~starting_items)=> Randomness seeded to: 1704455791
([slow] ~starting_items)=> 
([slow] ~starting_items)=> -------------------------------------------------------------------------------
([slow] ~starting_items)=> overmap_terrain_coverage
([slow] ~starting_items)=> -------------------------------------------------------------------------------
([slow] ~starting_items)=> ../tests/overmap_test.cpp:287
([slow] ~starting_items)=> ...............................................................................
([slow] ~starting_items)=> 
([slow] ~starting_items)=> ../tests/overmap_test.cpp:416: FAILED:
([slow] ~starting_items)=>   CHECK( num_missing == 0 )
([slow] ~starting_items)=> with expansion:
Error: ([slow] ~starting_items)=>   2 == 0
([slow] ~starting_items)=> with messages:
([slow] ~starting_items)=>   num_missing := 2
([slow] ~starting_items)=>   missing_oter_type_ids := "drug_lab and drug_lab_roof"
([slow] ~starting_items)=>   To resolve errors about missing terrains you can either give the terrain the
([slow] ~starting_items)=>   SHOULD_NOT_SPAWN flag (intended for terrains that should never spawn, for
([slow] ~starting_items)=>   example test terrains or work in progress), or tweak the constraints so that
([slow] ~starting_items)=>   the terrain can spawn more reliably, or add them to the whitelist above in
([slow] ~starting_items)=>   this function (inteded for terrains that sometimes spawn, but cannot be
([slow] ~starting_items)=>   expected to spawn reliably enough for this test)
([slow] ~starting_items)=> 
([slow] ~starting_items)=> Log messages during failed test:
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 859.277 s: overmap_terrain_coverage
([slow] ~starting_items)=> cata_test is a Catch v2.13.7 host application.
([slow] ~starting_items)=> Run with -? for options
([slow] ~starting_items)=> 
([slow] ~starting_items)=> Randomness seeded to: 1704459333
([slow] ~starting_items)=> 
([slow] ~starting_items)=> -------------------------------------------------------------------------------
([slow] ~starting_items)=> overmap_terrain_coverage
([slow] ~starting_items)=> -------------------------------------------------------------------------------
([slow] ~starting_items)=> ../tests/overmap_test.cpp:287
([slow] ~starting_items)=> ...............................................................................
([slow] ~starting_items)=> 
([slow] ~starting_items)=> ../tests/overmap_test.cpp:438: FAILED:
([slow] ~starting_items)=>   REQUIRE( msg.empty() )
([slow] ~starting_items)=> with expansion:
Error: ([slow] ~starting_items)=>   false
([slow] ~starting_items)=> with messages:
([slow] ~starting_items)=>   oter_type_id := "office_skyscraper_12"
([slow] ~starting_items)=>   msg := "In nested mapgen skyscraper_office_dr in mapgen office_skyscraper_12
([slow] ~starting_items)=>   on office_skyscraper_12_north, setting terrain to t_linoleum_white (from
([slow] ~starting_items)=>   t_linoleum_gray) at (6,7) when item teleumbrella existed.  Resolve this
([slow] ~starting_items)=>   either by removing the terrain from this mapgen, adding suitable removal
([slow] ~starting_items)=>   commands to the mapgen, or by adding an appropriate clearing flag to the
([slow] ~starting_items)=>   innermost layered mapgen.  Consult the "mapgen flags" section in MAPGEN.md
([slow] ~starting_items)=>   for options.In nested mapgen skyscraper_office_dr in mapgen
([slow] ~starting_items)=>   office_skyscraper_12 on office_skyscraper_12_north, setting terrain to
([slow] ~starting_items)=>   t_linoleum_gray (from t_linoleum_white) at (6,7) when item teleumbrella
([slow] ~starting_items)=>   existed.  Resolve this either by removing the terrain from this mapgen,
([slow] ~starting_items)=>   adding suitable removal commands to the mapgen, or by adding an appropriate
([slow] ~starting_items)=>   clearing flag to the innermost layered mapgen.  Consult the "mapgen flags"
([slow] ~starting_items)=>   section in MAPGEN.md for options."
([slow] ~starting_items)=> 
([slow] ~starting_items)=> Log messages during failed test:
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.
([slow] ~starting_items)=> 12:00:00PM: Unable to place all configured specials, some missions may fail to initialize.

@hexagonrecursion
Copy link
Contributor Author

hexagonrecursion commented Jan 5, 2024

I executed CI three times and every time overmap_terrain_coverage failed. It appears the test is inherently random - sometimes it just fails. Expanding the search radius should hopefully make it fail less often.

Note: I have seen a couple of recent commits in master that may have exacerbated this

@akrieger
Copy link
Member

akrieger commented Jan 5, 2024

The coverage test was made flakier by the worldgen changes Erk added in #69912. I would not worry about trying to fix that here (plus the change will make the test run twice as long), open a separate PR for that please.

@Maleclypse Maleclypse merged commit 4121629 into CleverRaven:master Jan 6, 2024
24 checks passed
@hexagonrecursion hexagonrecursion deleted the sanitize-1 branch January 6, 2024 06:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
astyled astyled PR, label is assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions [C++] Changes (can be) made in C++. Previously named `Code` Code: Tests Measurement, self-control, statistics, balancing. json-styled JSON lint passed, label assigned by github actions Map / Mapgen Overmap, Mapgen, Map extras, Map display Mutations / Traits / Professions/ Hobbies Mutations / Traits / Professions/ Hobbies
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants