RFR: 8342818: Implement JEP 509: JFR CPU-Time Profiling [v50]

Patricio Chilano Mateo pchilanomate at openjdk.org
Wed Jun 4 14:45:21 UTC 2025


On Wed, 4 Jun 2025 14:21:31 GMT, Johannes Bechberger <jbechberger at openjdk.org> wrote:

>> src/hotspot/share/jfr/periodic/sampling/jfrCPUTimeThreadSampler.cpp line 584:
>> 
>>> 582:   sev.sigev_notify = SIGEV_THREAD_ID;
>>> 583:   sev.sigev_signo = SIG;
>>> 584:   sev.sigev_value.sival_ptr = &t;
>> 
>> Why setting the address of `t` which is a local variable here?
>
> Because this is how the API works. You store the location where the timer should be stored.
> 
> See https://www.man7.org/linux/man-pages/man2/timer_create.2.html for more information.

Sorry where does it say that? I think you are looking at the example in that page which makes use of sival_ptr in the signal handler. In that example reading from that timer address in the handler is valid but for us we would be accessing invalid memory. Plus we are not really reading it.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25302#discussion_r2126787035


More information about the serviceability-dev mailing list