[erlang-bugs] [erlang-questions] dbg:tracer() aborts on binary match

Jon Meredith jmeredith@REDACTED
Tue Aug 5 15:12:42 CEST 2008


Hi,

Thanks for the response.

I'm trying to look for the (unescaped) character string \r\n (0x5c   
0x72 0x5c 0x6e) from inside a squid access log with HTTP header  
information delimited by \r\n.  I think I've escaped it correctly.

Here's an alternative version with the escaping ambiguity removed.

%% Abort when running dbg:tracer().
%%
%% 1> binbug:bug().
%% size_object: matchstate term not allowedAbort trap

-module(binbug2).
-export([bug/0,
          parse_headers/4]).

parse_headers(<<92:8, 114:8, 92:8, 110:8, T/binary>>, Hdr, Hdrs, Toks)  
->
     parse_headers(T, <<>>, [Hdr | Hdrs], Toks).

bug() ->
     dbg:tracer(),
     dbg:p(all, call),
     dbg:tpl(?MODULE, []),
     parse_headers(<<92:8, 114:8, 92:8, 110:8, 10:8>>, <<>>, [], []).



Jon

On Aug 5, 2008, at 1:27 AM, Hynek Vychodil wrote:

> There is wrong escaping off topic. It should be:
>
> parse_headers(<<"\r\n", T/binary>>, Hdr, Hdrs, Toks) ->
>     parse_headers(T, <<>>, [Hdr | Hdrs], Toks).
>
> bug() ->
>     dbg:tracer(),
>     dbg:p(all, call),
>     dbg:tpl(?MODULE, []),
>     parse_headers(<<"\r\n]">>, <<"hdr1">>, [], []).
>
>
> On Tue, Aug 5, 2008 at 12:07 AM, Jon Meredith  
> <jmeredith@REDACTED> wrote:
> Hi,
>
> I'm writing a small parser for reading log lines.  When it didn't do
> what I expected I tried to use dbg:tracer() to see where it was going
> wrong and it aborted.  Here is the cut down minimal test case.
>
> I'm expecting it to match and then try and call parse_headers with Hdr
> added to the Hdrs list, but instead the VM aborts.  Am I doing
> something wrong/strange?
>
> Many thanks, Jon.
>
> %% Abort when running dbg:tracer().
> %%
> %% 1> binbug:bug().
> %% size_object: matchstate term not allowedAbort trap
>
> -module(binbug).
> -export([bug/0,
>          parse_headers/4]).
>
> parse_headers(<<"\\r\\n", T/binary>>, Hdr, Hdrs, Toks) ->
>     parse_headers(T, <<>>, [Hdr | Hdrs], Toks).
>
> bug() ->
>     dbg:tracer(),
>     dbg:p(all, call),
>     dbg:tpl(?MODULE, []),
>     parse_headers(<<"\\r\\n]">>, <<"hdr1">>, [], []).
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions
>
>
>
> -- 
> --Hynek (Pichi) Vychodil

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-bugs/attachments/20080805/a75595de/attachment.htm>


More information about the erlang-bugs mailing list