Re: What kind of code might generate amd64 addressses like 0xFFFFF80000000007 or be based on 0xFFFFF80000000000 ?
Daniel O'Connor <[email protected]> Mon, 16 Dec 2024 17:05:55 +1030
| Newsgroups | gmane.os.freebsd.devel.hackers,gmane.os.freebsd.current,gmane.os.freebsd.stable,gmane.os.freebsd.devel.amd64 |
|---|---|
| Message-ID | <[email protected]> |
> On 16 Dec 2024, at 16:18, Mark Millard <[email protected]> wrote: >>> On 16 Dec 2024, at 10:33, Mark Millard <[email protected]> wrote: >>> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D267028 is for a = crash problem >>> someone has been having over more than 2 years. There are boot time = crashes >>> involved. >>>=20 >>> It appears that 0xFFFFF80000000007 is showing up in use and stored = in data >>> structures as a pointer value in fields/arguments that are pointers, = where such >>> a special value would not be expected. Later defrerencing does not = go well, at >>> least when the dererefenced data is then in-turn put to use. >>>=20 >>> The small offset from 0xFFFFF80000000000 suggests to me that the = special value likely >>> is inappropriately left around and somehow picked up and used. = 0xFFFFF80000000000 (or >>> near it) might be odd enough to have only a few known likely = possible usages. Such >>> notes in the bugzilla report would be good if such is the case. Thus = my question. >>=20 >> That value (0xffffffff80000000) is kernbase (see sysctl = kern.base_address). >=20 > On an amd64 system that I have access to: >=20 > # sysctl -x kern.base_address > kern.base_address: 0xffffffff80000000 >=20 > But, while looking similar, it is not the same base number: >=20 > 0xfffff80000000007 (copied and pasted from the kgdb session on the = vmcore.*) > 0xffffffff80000000 Oops, my mistake! > However, kern.base_address might be something that varies from > system to system in some way. Your value is the same as mine on this amd64 system - I don't think it = varies (for a given architecture anyway) > The closest examples I see in sysctl -ax output, start with > 0xfffff801. . ., such as shown by: >=20 > kern.geom.confdot: digraph geom { > z0xfffff80105633a00 [shape=3Dbox,label=3D"ZFS::VDEV\nzfs::vdev\nr#4"]; I assume these addresses are pointers to the internal GEOM objects = (because they must be unique) - ie they are actual memory location. Hmm, perhaps 0xfffff80000000000 is where kernel RAM starts? -- Daniel O'Connor "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum