unreferencing pointers
Ty Young
youngty1997 at gmail.com
Tue Dec 17 17:26:58 UTC 2019
On 12/17/19 5:37 AM, Maurizio Cimadamore wrote:
>
> On 17/12/2019 11:23, Ty Young wrote:
>>
>> On 12/17/19 5:07 AM, Maurizio Cimadamore wrote:
>>
>>
>> Pointer.ofNull() just causes a hard segfault.
>>
>>
>> Usually doing Pointer.ofNull() would be required for this, but unlike
>> other functions I've seen, this is returning the entire "list" itself
>> and not individual elements(Pointer<libusb_h.libusb_devic> in this
>> case). The Pointer<Pointer<Pointer<>>> madness makes no sense.
>
> I don't know what you mean. To me, looking at the C signature you
> shared (although you don't paste full signature - but I can infer from
> usage), what jextract does seems ok - you have one parameter that is a
> *listusb_device, and another parameter that seems to be a pointer to a
> **listusb_device (hence the triple pointer in the jextract signature).
>
> If you pass Pointer.ofNull as first parameter and the function
> segfaults, it seems to me that, maybe, there is some misunderstanding
> in how the function should be called? (e.g. maybe a NULL parameter is
> not valid?). Or, perhaps the segfault is not related to the first
> parameter, but rather to the second (likely), for which I'm still not
> clear what exactly you're doing.
I thought you meant Pointer.ofNull for the second argument. Yes, doing
that doesn't work.
>
> To be clear, I'd expect the second parameter to be something like:
>
> Pointer<Pointer<Pointer<libusb_h.libusb_device>>> devices =
> scope.allocate(LayoutType.ofStruct(libusb_h.libusb_device.class).pointer().pointer());
> ...
> libusb_get_device_list(Pointer.ofNull(), devices)
I did too but that just causes a segfault as well:
A fatal error has been detected by the Java Runtime Environment:
SIGSEGV (0xb) at pc=0x00007f6b37492dc4, pid=68886, tid=68887
JRE version: OpenJDK Runtime Environment (14.0) (build
14-internal+0-adhoc.ty.panama-foreign-linkToNative)
Java VM: OpenJDK 64-Bit Server VM
(14-internal+0-adhoc.ty.panama-foreign-linkToNative, mixed mode,
sharing, tiered, compressed oops, g1 gc, linux-amd64)
Problematic frame:
C [libpthread.so.0+0xbdc4] __pthread_mutex_lock+0x4
>Maurizio
More information about the panama-dev
mailing list