RFR: 8261710: SA DSO objects have sizes that are too large [v4]

Serguei Spitsyn sspitsyn at openjdk.java.net
Sat Feb 20 09:57:41 UTC 2021


On Sat, 20 Feb 2021 04:02:37 GMT, Yasumasa Suenaga <ysuenaga at openjdk.org> wrote:

>> BTW, one way to test these changes might be to do a `clhsdb pmap` and then do a `findpc` on the last address of each library's map (should find a symbol) and the first address after the map (should not find a symbol unless that happens to be the start of the next mapped library). I'm not sure if this will always work. It's possible that no symbol covers the very end of the map, especially due to page alignment. Maybe try the first address of the last page then. I'm not necessarily suggesting you write a test that does this, but maybe just do a bit of experimenting as a sanity check.
>
>> BTW, one way to test these changes might be to do a `clhsdb pmap` and then do a `findpc` on the last address of each library's map (should find a symbol) and the first address after the map (should not find a symbol unless that happens to be the start of the next mapped library). I'm not sure if this will always work. It's possible that no symbol covers the very end of the map, especially due to page alignment. Maybe try the first address of the last page then.
> 
> I thought similar tests, but I don't want to do so because it might fail as you said.
> As an option, we can add the test to to compare address range of shared libraries between `clhsdb pmap` and `/proc/<PID>/maps`. But I can add it for Linux only, so I'm not sure it is worth to add.

Thank you for the update.

> lib->end is declared as unsigned (uintptr_t), so we can't use (lib->end < aligned_end) when lib->end is set to -1.
Could we use the 0L instead of -1L? What's wrong with 0L?

In general, I'm okay with your fix though.

-------------

PR: https://git.openjdk.java.net/jdk/pull/2563


More information about the serviceability-dev mailing list