#15211: KDL in MultiLocker::ReadLock()
-----------------------------+----------------------------
Reporter: 3dEyes | Owner: waddlesplash
Type: bug | Status: assigned
Priority: normal | Milestone: Unscheduled
Component: System/Kernel | Version: R1/Development
Resolution: | Keywords:
Blocked By: | Blocking:
Has a Patch: 0 | Platform: All
-----------------------------+----------------------------
Comment (by korli):
0xcccccccc00000001 is in the non-canonical address hole on x86_64,
accessing it triggers a GPE.
From https://software.intel.com/sites/default/files/managed/39/c5/325462
-sdm-vol-1-2abcd-3abcd.pdf :
{{{
3.3.7.1 Canonical Addressing
In 64-bit mode, an address is considered to be in canonical form if
address bits 63 through to the most-significant
implemented bit by the microarchitecture are set to either all ones or all
zeros.
Intel 64 architecture defines a 64-bit linear address. Implementations can
support less. The first implementation of
IA-32 processors with Intel 64 architecture supports a 48-bit linear
address. This means a canonical address must
have bits 63 through 48 set to zeros or ones (depending on whether bit 47
is a zero or one).
Although implementations may not use all 64 bits of the linear address,
they should check bits 63 through the
most-significant implemented bit to see if the address is in canonical
form. If a linear-memory reference is not in
canonical form, the implementation should generate an exception. In most
cases, a general-protection exception
(#GP) is generated. However, in the case of explicit or implied stack
references, a stack fault (#SS) is generated.
}}}
--
Ticket URL: <https://dev.haiku-os.org/ticket/15211#comment:5>
Haiku <https://dev.haiku-os.org>
The Haiku operating system.