Re: IndexBuild Function call fcinfo cannot access memory

From: Jia Yu <jiayu2(at)asu(dot)edu>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: IndexBuild Function call fcinfo cannot access memory
Date: 2017-01-24 00:19:22
Message-ID: CAN7JVgU2sHSfmEvCEFXOLGGR708xe_euAABA6gqb3snFjjcQtw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Dear Tom,

BTW, my current implementation is on PG 9.5...

Thanks,
Jia Yu

------------------------------------

Jia Yu, Ph.D. Student

Computer Science

Arizona State University <http://www.asu.edu/>

Reach me via Jia Yu's Homepage <http://www.public.asu.edu/~jiayu2/> | GitHub
Repositories <https://github.com/jiayuasu>

On Mon, Jan 23, 2017 at 5:12 PM, Jia Yu <jiayu198910(at)gmail(dot)com> wrote:

> Dear Tom,
>
> Thanks for your reply!
>
> Actually, I already compiled the source code with "-O0" and then got those
> backtraces.
>
> The hippobuild function just starts building an index access method and it
> will call hippobuildcallback to iterate each parent table tuple in its
> function body.
>
> What makes me fell very confused is that the same code works when I call
> "make check" to run regression test (testing my index) but fails at running
> normal PG server.
>
> Here are the lines before and after the problematic line hippo.c 154. It
> is the first line of this function and did nothing.
>
> On the other hand, I will try to adjust my code to fit in PG 9.6 as you
> suggested.
>
> --------------------------------------
> static void hippobuildcallback()
> {
> .....
> .....
> .....
> *Line 148* }
> *Line 149* /*
> *Line 150* *This function initializes the entire Hippo. It will call
> buildcallback many times.
> *Line 151* */
> *Line 152* Datum
> *Line 153* hippobuild(PG_FUNCTION_ARGS)
> *Line 154* {
> *Line 155* /*
> * This is some routine declarations for variables
> */
> Relation heap = (Relation) PG_GETARG_POINTER(0);
> Relation index = (Relation) PG_GETARG_POINTER(1);
> IndexInfo *indexInfo = (IndexInfo *) PG_GETARG_POINTER(2);
> IndexBuildResult *result;
> double reltuples;
> HippoBuildState buildstate;
> Buffer buffer;
> ......
> --------------------------------------
>
> Any hints for this will be greatly appreciated!
>
>
> Thank you very much!
>
> Jia Yu
>
> On Mon, Jan 23, 2017 at 2:00 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
>> Jia Yu <jiayu198910(at)gmail(dot)com> writes:
>> > However, these methods don't work in the normal PG server. It gave me
>> > "segmentation fault"
>> > ...
>> > Here is my backtrace. It looks like I cannot access fcinfo. Can you
>> help me
>> > about this? Or just some hints? I have been struggling with this problem
>> > for weeks.
>>
>> What's the problematic line (hippo.c:154) doing? What's before
>> that in the hippobuild function?
>>
>> I wouldn't put much stock in the "Cannot access memory" message ... that
>> just means gdb is confused, which it frequently is. But possibly
>> building with -O0 would make it less confused.
>>
>> BTW, I gather from the reference to OidFunctionCall3Coll that you're
>> using PG 9.5 or older. It'd be a good idea to switch to 9.6, which has
>> noticeably cleaner indexam APIs that allow some compiler error checking
>> on those calls.
>>
>> regards, tom lane
>>
>
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Merlin Moncure 2017-01-24 00:20:56 Re: Checksums by default?
Previous Message Peter Geoghegan 2017-01-24 00:14:02 Re: Checksums by default?