Hi

A JsonSemAction sem is not well initialized

a array_element_start is not initialized and enforces sigfault on my comp

*** ./utils/adt/jsonb.c.orig    2014-10-13 16:37:00.479708142 +0200
--- ./utils/adt/jsonb.c    2014-10-13 16:36:33.704650644 +0200
***************
*** 786,791 ****
--- 786,793 ----
                      sem.scalar = jsonb_in_scalar;
                      sem.object_field_start = jsonb_in_object_field_start;

+                     sem.array_element_start = NULL;
+
                      pg_parse_json(lex, &sem);

                  }

I am not sure, if this fix is valid, but all tests are passed now

Regards

Pavel

2014-10-13 16:21 GMT+02:00 Pavel Stehule <pavel.steh...@gmail.com>:

>
>
> 2014-10-13 16:19 GMT+02:00 Tom Lane <t...@sss.pgh.pa.us>:
>
>> Pavel Stehule <pavel.steh...@gmail.com> writes:
>> > I checked this last version - warning is out, but SIGFAULT on jsonb
>> test is
>> > there .. I rechecked it with clang compiler, but result is same
>>
>> Stack trace please?
>>
>
> (gdb) bt
> #0  0x0000000000000072 in ?? ()
> #1  0x000000000087d598 in parse_array_element (lex=0x2880118,
> sem=0x7fffb4f02508) at json.c:461
> #2  0x0000000000878da7 in parse_array (lex=0x2880118, sem=0x7fffb4f02508)
> at json.c:505
> #3  0x000000000087d837 in parse_object_field (lex=0x2880118,
> sem=0x7fffb4f02508) at json.c:391
> #4  0x0000000000878cb2 in parse_object (lex=0x2880118, sem=0x7fffb4f02508)
> at json.c:432
> #5  0x000000000087831c in pg_parse_json (lex=0x2880118,
> sem=0x7fffb4f02508) at json.c:297
> #6  0x000000000087f484 in datum_to_jsonb (val=42202912, is_null=0 '\000',
> result=0x7fffb4f02800,
>     tcategory=JSONBTYPE_JSON, outfuncoid=322, key_scalar=0 '\000') at
> jsonb.c:789
> #7  0x000000000087fce7 in add_jsonb (val=42202912, is_null=0 '\000',
> result=0x7fffb4f02800, val_type=114,
>     key_scalar=0 '\000') at jsonb.c:1050
> #8  0x000000000087fbcc in jsonb_build_object (fcinfo=0x287e2c0) at
> jsonb.c:1155
> #9  0x000000000066d179 in ExecMakeFunctionResultNoSets (fcache=0x287e250,
> econtext=0x287e060, isNull=0x287eca8 "",
>     isDone=0x287edc0) at execQual.c:1992
> #10 0x000000000066776f in ExecEvalFunc (fcache=0x287e250,
> econtext=0x287e060, isNull=0x287eca8 "", isDone=0x287edc0)
>     at execQual.c:2383
> #11 0x000000000066c3bb in ExecTargetList (targetlist=0x287ed90,
> econtext=0x287e060, values=0x287ec90,
>     isnull=0x287eca8 "", itemIsDone=0x287edc0, isDone=0x7fffb4f02aac) at
> execQual.c:5265
> #12 0x000000000066c2c2 in ExecProject (projInfo=0x287ecc0,
> isDone=0x7fffb4f02aac) at execQual.c:5480
> #13 0x0000000000689ceb in ExecResult (node=0x287df50) at nodeResult.c:155
> #14 0x0000000000661987 in ExecProcNode (node=0x287df50) at
> execProcnode.c:373
> #15 0x000000000065dd46 in ExecutePlan (estate=0x287de40,
> planstate=0x287df50, operation=CMD_SELECT,
>     sendTuples=1 '\001', numberTuples=0, direction=ForwardScanDirection,
> dest=0x283fa00) at execMain.c:1481
> #16 0x000000000065dc70 in standard_ExecutorRun (queryDesc=0x2809d50,
> direction=ForwardScanDirection, count=0)
>     at execMain.c:308
> #17 0x000000000065db3f in ExecutorRun (queryDesc=0x2809d50,
> direction=ForwardScanDirection, count=0)
>     at execMain.c:256
> #18 0x00000000007ec70c in PortalRunSelect (portal=0x2807bc0, forward=1
> '\001', count=0, dest=0x283fa00)
>     at pquery.c:946
> #19 0x00000000007ec229 in PortalRun (portal=0x2807bc0,
> count=9223372036854775807, isTopLevel=1 '\001',
>     dest=0x283fa00, altdest=0x283fa00, completionTag=0x7fffb4f02ec0 "") at
> pquery.c:790
> #20 0x00000000007e7f7c in exec_simple_query (
>     query_string=0x283e1a0 "SELECT jsonb_build_object('e',json '{\"x\": 3,
> \"y\": [1,2,3]}');") at postgres.c:1045
> #21 0x00000000007e72cb in PostgresMain (argc=1, argv=0x27e5838,
> dbname=0x27e56e8 "postgres",
> ---Type <return> to continue, or q <return> to quit---q
> username=0x27e56d0 "paveQuit
>
> Regards
>
> Pavel
>
>
>>
>>                         regards, tom lane
>>
>
>

Reply via email to