Closed ekyooo closed 6 months ago
@ekyooo Please resolve conflict and rebase to master.
@ethercflow Could you please help reviewing this PR ? Thanks.
It's rebased to master. Thank you.
@ethercflow Could you please help reviewing this PR? If you don't like this change, it's enough to let me know. Since there is an issue with offcputime and futexctn, I will solve it with a minor modification by initializing the dso_name and dso_offset variables on the caller side. Thank you.
Hi @ekyooo,thank you so much for the fix. My apologies for the delayed response as I have not been checking this email for a long time. cc @chenhengqi
@ekyooo Please rebase to latest master.
@chenhengqi I rebased it to latest master branch. Thank you.
Are you in OSS NA? If so, I'd like to meet you for a moment.
offcputime may display inaccurate DSO information in the stacktrace. Here's an example of the issue:
It shows the same DSO offset for different addresses, which is incorrect.
This is why symsmap_addr_dso simply returns NULL when symsfind_dso also returns NULL. In that case, the values of dso_name and dso_offset are not changed. If the dso_name and dso_offset variables have a garbage value before calling symsmap_addr_dso, those garbage values are maintained after calling symsmap_addr_dso.
To ensure consistent usage of DSO info and symbol info, the prototype of syms__map_addr_dso has been modified to be similar to dladdr[1].
This is the prototype of dladdr:
The information is returned in a Dl_info structure. If no symbol matching addr could be found, then dli_sname and dli_saddr are set to NULL.
Similarly, if no symbol matching the addr could be found, then sym_name and sym_offset are set to NULL in syms__map_addr_dso of this patch.
Also, apply the modified API usage to offcputime, futexctn, and memleak.
[1] https://man7.org/linux/man-pages/man3/dladdr.3.html