Обсуждение: segmentation fault in function

Поиск
Список
Период
Сортировка

segmentation fault in function

От
Sergej Galkin
Дата:
I am realizing gist index and get a bug, that crashes DB. I' debugged my program as Robert(thanks !) advised me and I know which procedure crashed.

Datum gist_mov_consistent(PG_FUNCTION_ARGS)
{
    GISTENTRY *entry = (GISTENTRY *)PG_GETARG_POINTER(0);
    BOX *query = PG_GETARG_BOX_P(1);
    StrategyNumber strategy = (StrategyNumber)PG_GETARG_UINT16(2);
   
    if (DatumGetMovP(entry->key) == NULL || query == NULL)
        PG_RETURN_BOOL(FALSE);
   
    PG_RETURN_BOOL(obj_contains(DatumGetMovP(entry->key), query));
}

int obj_contains(moving_object *a, BOX *b)
{
   
    if (b->low.x > a->x_low)
        return 0;
    if (b->low.y > a->y_low)
        return 0;
    if (b->high.x < a->x_high)
        return 0;
    if (b->high.y < a->y_high)
        return 0;
    return 1;
}

Do you have any ideas ?


Best regards,
Sergej Galkin

Re: segmentation fault in function

От
Dimitri Fontaine
Дата:
Sergej Galkin <sergej.galkin@gmail.com> writes:

> I am realizing gist index and get a bug, that crashes DB. I' debugged
> my program as Robert(thanks !) advised me and I know which procedure
> crashed.

Using gdb you should have the line number in the source code and should
be able to look up the variable values. For that you need to use a
custom PostgreSQL build using --with-cassert --enable-debug.

Then report some more details if you still need help.

Also have a look at Gevel to be able to inspect your index : http://www.sai.msu.su/~megera/wiki/Gevel

Regards,
--
dim