ci(amd64/clang/msan): fix msan errors #59
					 4 changed files with 17 additions and 33 deletions
				
			
		| 
						 | 
					@ -112,7 +112,7 @@ Instance::~Instance()
 | 
				
			||||||
	unload_library();
 | 
						unload_library();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((no_sanitize("memory"))) void Instance::initialize_instance()
 | 
					void Instance::initialize_instance()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	auto app_info = VkApplicationInfo {
 | 
						auto app_info = VkApplicationInfo {
 | 
				
			||||||
		.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
 | 
							.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
 | 
				
			||||||
| 
						 | 
					@ -231,7 +231,7 @@ __attribute__((no_sanitize("memory"))) void Instance::initialize_instance()
 | 
				
			||||||
	ensure(m_instance, "Failed to create vulkan instance");
 | 
						ensure(m_instance, "Failed to create vulkan instance");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((no_sanitize("memory"))) void Instance::load_library()
 | 
					void Instance::load_library()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	constexpr auto runtime_loader_flags = RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE;
 | 
						constexpr auto runtime_loader_flags = RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE;
 | 
				
			||||||
	library = dlopen("libvulkan.so.1", runtime_loader_flags);
 | 
						library = dlopen("libvulkan.so.1", runtime_loader_flags);
 | 
				
			||||||
| 
						 | 
					@ -248,7 +248,7 @@ __attribute__((no_sanitize("memory"))) void Instance::load_library()
 | 
				
			||||||
	ensure(vk_get_instance_proc_address, "Failed to load vulkan function: vkGetInstanceProcAddr");
 | 
						ensure(vk_get_instance_proc_address, "Failed to load vulkan function: vkGetInstanceProcAddr");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((no_sanitize("memory"))) void Instance::unload_library()
 | 
					void Instance::unload_library()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!library)
 | 
						if (!library)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
| 
						 | 
					@ -263,7 +263,7 @@ __attribute__((no_sanitize("memory"))) void Instance::unload_library()
 | 
				
			||||||
	// library = nullptr;
 | 
						// library = nullptr;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((no_sanitize("memory"))) void Instance::load_global_functions()
 | 
					void Instance::load_global_functions()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	constexpr auto load_fn = []<typename T>(T &pfn, const char *fn_name) {
 | 
						constexpr auto load_fn = []<typename T>(T &pfn, const char *fn_name) {
 | 
				
			||||||
		// NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast)
 | 
							// NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast)
 | 
				
			||||||
| 
						 | 
					@ -277,7 +277,7 @@ __attribute__((no_sanitize("memory"))) void Instance::load_global_functions()
 | 
				
			||||||
	load_fn(vk_enumerate_instance_layer_properties, "vkEnumerateInstanceLayerProperties");
 | 
						load_fn(vk_enumerate_instance_layer_properties, "vkEnumerateInstanceLayerProperties");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((no_sanitize("memory"))) void Instance::load_instance_functions()
 | 
					void Instance::load_instance_functions()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const auto load_fn = [&]<typename T>(T &pfn, const char *fn_name) {
 | 
						const auto load_fn = [&]<typename T>(T &pfn, const char *fn_name) {
 | 
				
			||||||
		// NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast)
 | 
							// NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast)
 | 
				
			||||||
| 
						 | 
					@ -321,7 +321,7 @@ __attribute__((no_sanitize("memory"))) void Instance::load_instance_functions()
 | 
				
			||||||
	load_fn(vk_destroy_surface_khr, "vkDestroySurfaceKHR");
 | 
						load_fn(vk_destroy_surface_khr, "vkDestroySurfaceKHR");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((no_sanitize("memory"))) void Instance::load_device_functions_impl(VkDevice device)
 | 
					void Instance::load_device_functions_impl(VkDevice device)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const auto load_fn = [&]<typename T>(T &pfn, const char *fn_name) {
 | 
						const auto load_fn = [&]<typename T>(T &pfn, const char *fn_name) {
 | 
				
			||||||
		// NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast)
 | 
							// NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,18 +64,17 @@ private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Instance();
 | 
						Instance();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	__attribute__((no_sanitize("memory"))) void initialize_instance();
 | 
						void initialize_instance();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	__attribute__((no_sanitize("memory"))) void load_library();
 | 
						void load_library();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	__attribute__((no_sanitize("memory"))) void unload_library();
 | 
						void unload_library();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	__attribute__((no_sanitize("memory"))) void load_global_functions();
 | 
						void load_global_functions();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	__attribute__((no_sanitize("memory"))) void load_instance_functions();
 | 
						void load_instance_functions();
 | 
				
			||||||
 | 
					 | 
				
			||||||
	__attribute__((no_sanitize("memory"))) void load_device_functions_impl(VkDevice device);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void load_device_functions_impl(VkDevice device);
 | 
				
			||||||
	VkInstance m_instance = VK_NULL_HANDLE;
 | 
						VkInstance m_instance = VK_NULL_HANDLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	VkAllocationCallbacks *m_allocator = nullptr;
 | 
						VkAllocationCallbacks *m_allocator = nullptr;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,7 +12,6 @@
 | 
				
			||||||
#include <X11/keysymdef.h>
 | 
					#include <X11/keysymdef.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
#include <sanitizer/msan_interface.h>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace lt::surface {
 | 
					namespace lt::surface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -105,10 +104,7 @@ void System::on_unregister()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((no_sanitize_memory)) void System::create_surface_component(
 | 
					void System::create_surface_component(ecs::EntityId entity, SurfaceComponent::CreateInfo info)
 | 
				
			||||||
    ecs::EntityId entity,
 | 
					 | 
				
			||||||
    SurfaceComponent::CreateInfo info
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
try
 | 
					try
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	auto &component = m_registry->add<SurfaceComponent>(entity, info);
 | 
						auto &component = m_registry->add<SurfaceComponent>(entity, info);
 | 
				
			||||||
| 
						 | 
					@ -171,11 +167,6 @@ try
 | 
				
			||||||
	auto hints = std::array<const unsigned char, 5> { 2, 0, 0, 0, 0 };
 | 
						auto hints = std::array<const unsigned char, 5> { 2, 0, 0, 0, 0 };
 | 
				
			||||||
	const auto motif_hints = XInternAtom(display, "_MOTIF_WM_HINTS", False);
 | 
						const auto motif_hints = XInternAtom(display, "_MOTIF_WM_HINTS", False);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__clang__) && __has_feature(memory_sanitizer)
 | 
					 | 
				
			||||||
	auto bytes = (size_t)(1u) * (size_t)hints.size();
 | 
					 | 
				
			||||||
	__msan_unpoison((void *)hints.data(), bytes);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	XChangeProperty(
 | 
						XChangeProperty(
 | 
				
			||||||
	    display,
 | 
						    display,
 | 
				
			||||||
	    surface.m_native_data.window,
 | 
						    surface.m_native_data.window,
 | 
				
			||||||
| 
						 | 
					@ -344,10 +335,7 @@ void System::modify_title(SurfaceComponent &surface, const ModifyTitleRequest &r
 | 
				
			||||||
	XStoreName(display, window, request.title.c_str());
 | 
						XStoreName(display, window, request.title.c_str());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((no_sanitize("memory"))) void System::modify_resolution(
 | 
					void System::modify_resolution(SurfaceComponent &surface, const ModifyResolutionRequest &request)
 | 
				
			||||||
    SurfaceComponent &surface,
 | 
					 | 
				
			||||||
    const ModifyResolutionRequest &request
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	// surface.m_resolution = request.resolution;
 | 
						// surface.m_resolution = request.resolution;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,10 +27,7 @@ public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void on_unregister() override;
 | 
						void on_unregister() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	__attribute__((no_sanitize("memory"))) void create_surface_component(
 | 
						void create_surface_component(ecs::EntityId entity, SurfaceComponent::CreateInfo info);
 | 
				
			||||||
	    ecs::EntityId entity,
 | 
					 | 
				
			||||||
	    SurfaceComponent::CreateInfo info
 | 
					 | 
				
			||||||
	);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void tick(app::TickInfo tick) override;
 | 
						void tick(app::TickInfo tick) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,12 +45,12 @@ private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void modify_title(struct SurfaceComponent &surface, const struct ModifyTitleRequest &request);
 | 
						void modify_title(struct SurfaceComponent &surface, const struct ModifyTitleRequest &request);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	__attribute__((no_sanitize("memory"))) void modify_resolution(
 | 
						void modify_resolution(
 | 
				
			||||||
	    struct SurfaceComponent &surface,
 | 
						    struct SurfaceComponent &surface,
 | 
				
			||||||
	    const struct ModifyResolutionRequest &request
 | 
						    const struct ModifyResolutionRequest &request
 | 
				
			||||||
	);
 | 
						);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	__attribute__((no_sanitize("memory"))) void modify_position(
 | 
						void modify_position(
 | 
				
			||||||
	    struct SurfaceComponent &surface,
 | 
						    struct SurfaceComponent &surface,
 | 
				
			||||||
	    const struct ModifyPositionRequest &request
 | 
						    const struct ModifyPositionRequest &request
 | 
				
			||||||
	);
 | 
						);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue