My understanding is that in our master executor or ESP processes,  SIGSEGV may 
come from java run-time where de-referencing a pointer (sometime a null 
pointer) is common. So theoretically gdb can receive a SIGSEGV anytime when 
debug the compiler or executor code.


That pgdb trick works great. Thanks for sharing.


One word of caution is that "handle SIGSEGV nopass" masks out any true 
segmentation violation condition: when a null pointer (such as selection_ 
below) is referenced. One probably should do "p selection_" first to make sure 
selection_ is not a null.


Breakpoint 1, Scan::bindNode (this=0x7fffc25119e8, bindWA=0x7ffffffe9340)

    at ../optimizer/BindRelExpr.cpp:7868

7868      if (nodeIsBound())

(gdb) pgdb selection_

$1 = (ItemExpr *) 0x7fffc2512af0

(gdb) p selection_->display()

(A = 1)

$2 = void

(gdb) c


Thanks --Qifan


________________________________
From: Narendra Goyal <[email protected]>
Sent: Tuesday, June 12, 2018 11:06:33 AM
To: [email protected]
Subject: FW: SQL compiler debugging on CentOS 7

Not sure why it's happening. Perhaps something to do with some signal handling. 
Setting the SIGSEGV handler (in a gdb session) to 'nopass' before doing a 'p 
<method>' and resetting it to 'pass'  immediately after the call seems to work.

With the following methodology one doesn't have to remember setting/resetting 
the handler.

Add the following to ~/.gdbinit:

define pgdb
 handle SIGSEGV nopass
 p $arg0
 handle SIGSEGV pass
end

and then in the gdb session, call:
 pgdb <method>

If there are args for the <method>, just need to call <method(arg1,arg2..)> 
without spaces.

Thanks,
-Narendra

> -----Original Message-----
> From: Dave Birdsall <[email protected]>
> Sent: Tuesday, May 29, 2018 10:29 AM
> To: [email protected]
> Subject: SQL compiler debugging on CentOS 7
>
> Hi,
>
> I'm doing some debugging in the SQL compiler on a Trafodion instance on 
> CentOS 7.
>
> One of the things I commonly do is use the "display()" function in gdb on 
> various ItemExpr-related classes. So, at the gdb prompt, I might do "p 
> keyList.display()".
>
> This works fine on RedHat instances. But today I tried it for the first time 
> on a CentOS 7 instance, and, after showing some output, the function appears 
> to go into an infinite loop. Top shows gdb running at close to 100%.
>
> Has anyone else seen this? Does anyone know what the issue is?
>
> Thanks,
>
> Dave

Reply via email to