How do I pass numba recarray pointer to cffi function

In the following example, passing numba struct pointer via ffi.from_buffer() worked ok in pure python, but had error inside jitted function:

with open ('_car.h', 'w') as f:
    f.write ("""typedef struct Car {
    int mileage;
    double price;
} Car;
double get_price_per_mile(Car *car);

with open ('_car.c', 'w') as f:
    f.write ("""#include <stdio.h>
#include "_car.h"
double get_price_per_mile(Car *car) {
    double res = car->price/(double)car->mileage;
    printf("This WORKS! mileage= %d price= %lf: %lf\\n", car->mileage, car->price, res);

import cffi
import numpy
import numba
from numba import jit, njit
from numba.core.typing import cffi_utils
ffi = cffi.FFI()
ffi.set_source("_carlib", '#include "_car.h"', sources=["_car.c"])
import _carlib
cffi_utils.register_type(ffi.typeof('Car*'), numba.types.voidptr)

cdata ="Car[1]")
sig = cffi_utils.map_type(ffi.typeof("Car"), use_record_dtype=True)
nparr = numpy.recarray(1, dtype=sig, buf=ffi.buffer(cdata))
nparr.price[0] = 5500.0; nparr.mileage[0] = 11000

#this one works

def njit_test_drive(nparr):

#but this one has error

any help will be greatly appreciated.

ps. error message:
numba.core.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Internal error at resolving type of attribute "get_price_per_mile" of "$4load_attr.1".
<ctype 'struct Car'>
During: typing of get attribute at (43)
def njit_test_drive(nparr):