[Bro-Dev] [JIRA] (BIT-1376) method to reproduce "internal error: unknown msg type 115 in Poll()"

Robin Sommer (JIRA) jira at bro-tracker.atlassian.net
Fri Apr 17 12:38:00 PDT 2015


    [ https://bro-tracker.atlassian.net/browse/BIT-1376?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=20315#comment-20315 ] 

Robin Sommer commented on BIT-1376:
-----------------------------------

I find it hard to predict if removing the hardcap will cause other trouble, but I'm fine giving this patch a try; in the end, if somebody runs into overload, it's a problem either way. We can use the beta period to see if anything major shows up; if so, it would be easy to back out the patch again.

> method to reproduce "internal error: unknown msg type 115 in Poll()"
> --------------------------------------------------------------------
>
>                 Key: BIT-1376
>                 URL: https://bro-tracker.atlassian.net/browse/BIT-1376
>             Project: Bro Issue Tracker
>          Issue Type: Problem
>          Components: Bro
>            Reporter: Jon Siwek
>            Assignee: Robin Sommer
>
> Justin found a modification to Bro and a script that triggers the "unknown msg type 115" bug.  This method seems to reproduce the problem fairly reliably and between two bro processes started via command-line.
> Patch:
> {code}
> diff --git a/src/ChunkedIO.h b/src/ChunkedIO.h
> index b590453..39af9b1 100644
> --- a/src/ChunkedIO.h
> +++ b/src/ChunkedIO.h
> @@ -223,10 +223,10 @@ private:
>  
>         // We report that we're filling up when there are more than this number
>         // of pending chunks.
> -       static const uint32 MAX_BUFFERED_CHUNKS_SOFT = 400000;
> +       static const uint32 MAX_BUFFERED_CHUNKS_SOFT = 40;
>  
>         // Maximum number of chunks we store in memory before rejecting writes.
> -       static const uint32 MAX_BUFFERED_CHUNKS = 500000;
> +       static const uint32 MAX_BUFFERED_CHUNKS = 50;
>  
>         char* read_buffer;
>         uint32 read_len;
> {code}
> Start a bro process like this:
> {code}
> $ cat test.bro 
> @load frameworks/communication/listen
> redef Communication::nodes += {
>     ["foo"] = [$host = 127.0.0.1, $sync=T]
> };
> global counters: table[string] of count &synchronized &default=0;
> event do_some (n:count)
> {
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters["thecounter"];
>     ++counters[peer_description];
>     if(counters["thecounter"] % 10000 == 0 ) {
>         Reporter::warning(fmt("I am %s and The counter is %d. my counter is %d", peer_description, counters["thecounter"], counters[peer_description]));
>     }
>     if(n != 0) {
>         schedule 1msec { do_some(n-1) };
>     } else {
>         Reporter::warning(fmt("The counter is %d", counters["thecounter"]));
>     }
> }
> event bro_init()
> {
>     schedule 1sec { do_some(1000000) };
>     schedule 2sec { do_some(1000000) };
>     schedule 3sec { do_some(1000000) };
> }
> $ bro -b ./test.bro
> {code}
> Then start another like this:
> {code}
> $ cat test.bro 
> @load base/frameworks/communication
> redef Communication::nodes += {
>     ["foo"] = [$host = 127.0.0.1, $events = /.*/, $connect=T, $sync=T,
>                $retry=5sec]
> };
> global counters: table[string] of count &synchronized &default=0;
> event check ()
> 	{
> 	print counters["thecounter"];
>         schedule 5sec { check() };
> 	}
> event bro_init()
> 	{
>         schedule 5sec { check() };
> 	}
> $ bro -b ./test.bro 
> processing suspended
> processing continued
> 55069
> 58963
> 62831
> 66636
> internal error: unknown msg type 115 in Poll()
> Abort trap: 6
> {code}



--
This message was sent by Atlassian JIRA
(v6.4-OD-16-006#64014)


More information about the bro-dev mailing list