lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Fri, Jan 16, 2015 at 3:15 PM, Sean Conner <sean@conman.org> wrote:
> It was thus said that the Great Andrew Starks once stated:
>>
>> If you always error, you can
>> pretend that errors never happen, until you can't. In a garbage
>> collected language, the places where you need to clean the state up
>> are pretty limited, so this may be more true of Lua than of C, or
>> whathaveyou.
>
>   But you can still leak resources if you don't clear your references.  I
> just found such a bug at work at one place, and now I'm afraid of all the
> paths I neglected to clean up references leading up to that point.
>
>   And the path is checking a SIP message for validity, so it's a lot of
>
>         if not this_header then
>           reply "you bozo!"
>         end
>
>         if this_header ~= "that" then
>           reply "you bozo!"
>         end
>
>   And I can't just toss an error here because there are two (or three, if
> you squint) distinct phases to the processing:
>
>         We've received the initial message, check for validity and send back
>         ACK or NAK.
>
>         Send a new message to something else (it may be the oritinal sender;
>         it may not be), and wait for an ACK or NACK.
>
> which is running as a coroutine, which has its own peculiarities.
>
>   Handling errors in the first half is different from the second half (the
> third phase is just skipping the second phase if we receive a particual
> message).
>
>> `return nil, error_msg` forces you to write more code every time you
>> call that function.
>
>   But that's pretty much what I"m doing now.
>
>   -spc (Off to check all the code paths now ... sigh)
>
>
Yes yes...

I'm thinking about a future bug: "It's leaking memory, but only
sometimes..." and that "sometimes" happens only when the state gets
screwed up due to a call that failed part way through...

I'd like to change the world by thinking about it and typing into this
web browser, but all that ever does happen is that I keep changing my
mind...

-Andrew