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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |WAITING
   Last reconfirmed|                            |2021-12-03

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Hedayat Vatankhah from comment #2)
> With these options, the code runs a bit more but still crashes.

Right those options are supposed to be used to catch issues in your code.

> The output
> of each option is given below:
> 
> Output with -fsanitize=undefined:
> /home/hedayat/Projects/powerfake/powerfake.h:257:40: runtime error: load of
> misaligned address 0x00000044c556 for type '<unknown> *', which requires 8
> byte alignment
> 0x00000044c556: note: pointer points here
>  00 e8 ac 5a 00 00  84 c0 74 17 48 8d 55 f4  48 8d 45 f8 48 89 c6 bf  00 5c
> 4b 00 e8 17 5b 00  00 eb
>              ^ 
> zsh: segmentation fault (core dumped)  ./sample/samples

Can you check the above part of the problem.



template <typename FuncType>
remove_func_cv_t<FuncType> unify_pmf(FuncType f)
{
    return reinterpret_cast<remove_func_cv_t<FuncType>>(f);
}


This looks like it could cause issues.
So does:

            return std::make_pair(reinterpret_cast<void *>(func_ptr),
                std::type_index(typeid(FuncType)));


I get the feeling you don't understand how pointer to member functions work in
some cases.

Reply via email to