While attempting to unwind an i386 binary on an x86_64 machine I found
the following two bugs.
The first is that _UPTi_find_unwind_table when reading the eh_frame_ptr
and fde_count assume the existence of unw_local_addr_space, which
doesn't exist when compiled for the non-native i386 architecture.
This was fixed by creating a dummy address space with an access_mem
callback which is the only callback called by this method.
I think your problem stems from this statement in libunwind-ptrace(3) man page:
AVAILABILITY
Since ptrace(2) works within a single machine only, the _UPT-facility
by definition is not available in libunwind-versions configured for
cross-unwinding.
It looks like you're trying to use ptrace() for the non-native case. Can you give a higher level description of what you're trying to accomplish?
Perhaps you should write your own accessors for accessing an i386 address space from a x86_64 process and call unw_create_addr_space()?
-Arun
PS: Were you trying to use _UPT_accessors by any chance?