vk_error() is a macro that calls __vk_errorf() with instance == NULL.
Then, __vk_errorf() passes a pointer to instance->debug_report_callbacks
to vk_debug_error(), which segfaults as this pointer is invalid but not
NULL.
Fixes: e5b1bd6ab8 "vulkan: move anv VK_EXT_debug_report implementation to common code."
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
snprintf(report, sizeof(report), "%s:%d: %s", file, line, error_str);
}
- vk_debug_report(&instance->debug_report_callbacks,
- VK_DEBUG_REPORT_ERROR_BIT_EXT,
- type,
- (uint64_t) (uintptr_t) object,
- line,
- 0,
- "anv",
- report);
+ if (instance) {
+ vk_debug_report(&instance->debug_report_callbacks,
+ VK_DEBUG_REPORT_ERROR_BIT_EXT,
+ type,
+ (uint64_t) (uintptr_t) object,
+ line,
+ 0,
+ "anv",
+ report);
+ }
intel_loge("%s", report);