https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110196

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |redi at gcc dot gnu.org
   Last reconfirmed|                            |2023-06-09

--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to fabian_kess...@gmx.de from comment #3)
> Also, backtrace_create_state is ment to be called just once per execution,
> because it allocates unfreeable memory. Maybe, a singleton would be the way
> to go here.

It is only called once, isn't it?


(In reply to fabian_kess...@gmx.de from comment #5)
> Indeed, changing _S_init to the following improved it:
> 
> ```
>   static backtrace_state *_S_init() {
> 
>     static backtrace_state *__state = []() {
>       auto getpath = []() -> std::string {
>         char buf[PATH_MAX + 1];
>         if (readlink("/proc/self/exe", buf, sizeof(buf) - 1) == -1) {

This isn't portable, not all systems have /proc/self/exe, or readlink.

I think it would be better to move this function into the library, and use
std::filesystem::read_symlink.

Reply via email to