From f52c44647f8ec34dadd188fba4c1d6dbe070010f Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Thu, 19 Jan 2017 13:57:03 +0100 Subject: [PATCH] core: replace misleading avl warning in detach If the detach address is not the beginning of the region, one gets: "virtual void Genode::Allocator_avl_base::free(void*): given address (0x180e0) is not the block start address (0x18000)" Instead, print an explicit warning in front of the detach call. --- repos/base/src/core/region_map_component.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/repos/base/src/core/region_map_component.cc b/repos/base/src/core/region_map_component.cc index afe536da48..4e96e17cde 100644 --- a/repos/base/src/core/region_map_component.cc +++ b/repos/base/src/core/region_map_component.cc @@ -453,6 +453,10 @@ void Region_map_component::detach(Local_addr local_addr) return; } + if (region_ptr->base() != static_cast(local_addr)) + warning("detach: ", static_cast(local_addr), " is not " + "the beginning of the region ", Hex(region_ptr->base())); + Dataspace_component *dsc = region_ptr->dataspace(); if (!dsc) warning("detach: region of ", this, " may be inconsistent!"); @@ -478,7 +482,7 @@ void Region_map_component::detach(Local_addr local_addr) * refer to an empty region not to the dataspace, which we just removed. */ if (platform()->supports_unmap()) - _map.free(local_addr); + _map.free(reinterpret_cast(region.base())); /* * This function gets called from the destructor of 'Dataspace_component',