Thread

  1. pl/python tracebacks v2

    Jan Urbański <wulczer@wulczer.org> — 2011-03-20T23:40:02Z

    I finally got around to updating the PL/Python tracebacks patch. The
    other day I was writing some very simple PL/Python code and the lack of
    tracebacks is extremely annoying.
    
    Getting a TypeError without any line information in a function with 30
    lines because there's a %d instead of a %s somewhere in a logging call
    can make your debugging experience very lousy.
    
    Attached is a patch against master, with simplified error forming logic
    and the traceback in the context field. If you look at the expected
    regression test output, you will see that the only thing that changes is
    the presense of tracebacks in context messages.
    
    I'll update the commitfest app for the 2011-Next commitfest, but if
    someone would like to pick this up and include it in the 9.1 PL/Python
    revamp pack, I'd be thrilled.
    
    Cheers,
    Jan
    
  2. Re: pl/python tracebacks v2

    Peter Geoghegan <peter@2ndquadrant.com> — 2011-03-21T01:47:18Z

    On 20 March 2011 23:40, Jan Urbański <wulczer@wulczer.org> wrote:
    > I'll update the commitfest app for the 2011-Next commitfest, but if
    > someone would like to pick this up and include it in the 9.1 PL/Python
    > revamp pack, I'd be thrilled.
    
    I would also be thrilled. I definitely share your sense of frustration
    about the lack of tracebacks available when writing pl/python.
    
    -- 
    Peter Geoghegan       http://www.2ndQuadrant.com/
    PostgreSQL Development, 24x7 Support, Training and Services
    
    
  3. Re: pl/python tracebacks v2

    Peter Eisentraut <peter_e@gmx.net> — 2011-04-06T19:38:25Z

    On mån, 2011-03-21 at 00:40 +0100, Jan Urbański wrote:
    > I finally got around to updating the PL/Python tracebacks patch. The
    > other day I was writing some very simple PL/Python code and the lack of
    > tracebacks is extremely annoying.
    
    I tweaked this a bit to make the patch less invasive, and then committed
    it. :)
    
    
    
  4. Re: pl/python tracebacks v2

    Jan Urbański <wulczer@wulczer.org> — 2011-04-06T20:16:13Z

    On 06/04/11 21:38, Peter Eisentraut wrote:
    > On mån, 2011-03-21 at 00:40 +0100, Jan Urbański wrote:
    >> I finally got around to updating the PL/Python tracebacks patch. The
    >> other day I was writing some very simple PL/Python code and the lack of
    >> tracebacks is extremely annoying.
    > 
    > I tweaked this a bit to make the patch less invasive, and then committed
    > it. :)
    
    Ouch, just today I found a flaw in this, namely that it assumes the
    lineno from the traceback always refers to the PL/Python function. If
    you create a PL/Python function that imports some code, runs it, and
    that code raises an exception, PLy_traceback will get utterly confused.
    
    Working on a fix...
    
    Jan
    
    PS: obviously it'd be great to have PL/Python traceback support in 9.1,
    but I sure hope we'll get some testing in beta for issues like this...
    
    J
    
    
  5. Re: pl/python tracebacks v2

    Jan Urbański <wulczer@wulczer.org> — 2011-04-06T21:54:41Z

    On 06/04/11 22:16, Jan Urbański wrote:
    > On 06/04/11 21:38, Peter Eisentraut wrote:
    >> On mån, 2011-03-21 at 00:40 +0100, Jan Urbański wrote:
    >>> I finally got around to updating the PL/Python tracebacks patch. The
    >>> other day I was writing some very simple PL/Python code and the lack of
    >>> tracebacks is extremely annoying.
    >>
    >> I tweaked this a bit to make the patch less invasive, and then committed
    >> it. :)
    > 
    > Ouch, just today I found a flaw in this, namely that it assumes the
    > lineno from the traceback always refers to the PL/Python function. If
    > you create a PL/Python function that imports some code, runs it, and
    > that code raises an exception, PLy_traceback will get utterly confused.
    > 
    > Working on a fix...
    
    Here's the fix.
    
    The actual bug was funny. The traceback code was fetching the file line
    from the traceback and trying to get that line from the original source
    to print it. But sometimes that line was refering to a different source
    file, like when the exception originated from an imported module.
    
    In my testing I accidentally had the error (in a separate module) on
    line 2, so the traceback code tried to fetch line 2 of the function,
    which was completely whitespace. This can never happen in theory,
    because you can't have a frame starting at an all-whitespace line. The
    code to get that line was misbehaving and trying to do a malloc(-2),
    which in turn was causing an "ERROR invalid memory allocation".
    
    All that is fixed with the attached patch.
    
    Cheers,
    Jan
    
    PS: and thanks for committing that in the first place! :)
    
    J
    
  6. Re: pl/python tracebacks v2

    Peter Eisentraut <peter_e@gmx.net> — 2011-04-20T20:22:33Z

    On Wed, 2011-04-06 at 23:54 +0200, Jan Urbański wrote:
    > > Ouch, just today I found a flaw in this, namely that it assumes the
    > > lineno from the traceback always refers to the PL/Python function. If
    > > you create a PL/Python function that imports some code, runs it, and
    > > that code raises an exception, PLy_traceback will get utterly confused.
    > > 
    > > Working on a fix...
    > 
    > Here's the fix.
    
    Committed.