> On March 28, 2014, 12:27 p.m., Corey Farrell wrote:
> > Do we want to produce a warning if someone tries writing to refs from 
> > logger.conf (an error if they do so with REF_DEBUG enabled)?  I know this 
> > is unlikely, I'm just trying to think of everything since this is being 
> > applied to existing branches.
> > 
> > 
> > With refcounter.py I found two backtraces:
> > KeyboardInterrupt (Ctrl-C)
> > IOError: [Errno 32] Broken pipe (exiting less before refcounter.py finished 
> > output)
> > 
> > It'd be awesome if these would just silently exit.

Having logger.c emit an error if someone creates a log file with the name of 
'refs': this isn't done for the memory allocation log file either. In general, 
if you're using REF_DEBUG, MALLOC_DEBUG, or other compile time options to 
create additional debug output, you should have some consideration for knowing 
what you're doing.

I added a try/except around the bulk of the processing that handles 
KeybaordInterrupt/SystemExit.


> On March 28, 2014, 12:27 p.m., Corey Farrell wrote:
> > /branches/1.8/channels/chan_sip.c, line 232
> > <https://reviewboard.asterisk.org/r/3377/diff/4/?file=56827#file56827line232>
> >
> >     Another comment like this was added to channels/sip/security_events.c 
> > in 11+.  Please make sure it's removed when you commit.

That's fine.


> On March 28, 2014, 12:27 p.m., Corey Farrell wrote:
> > /branches/1.8/contrib/scripts/refcounter.py, lines 130-133
> > <https://reviewboard.asterisk.org/r/3377/diff/4/?file=56828#file56828line130>
> >
> >     I don't much care for output of normal objects by default.  This 
> > produces very large output even for just starting and stopping asterisk 
> > (9.4MB in my test run of 1.8), and objects that didn't leak or skew are not 
> > normally useful.  If I were troubleshooting an issue and felt the need to 
> > see normal objects, I would just want the original /var/log/asterisk/refs 
> > to see the order of all refs without grouping by object.
> >     
> >     I'm not sure the other --suppress options are useful either.  I think 
> > it would be fine if we always print all skew and leak objects (both are 
> > errors), and give an option to enable showing of normal objects.  Less is 
> > better when it comes time to instruct a bug reporter on how to provide us 
> > the required information.

I don't really like having some options that invert output, and others that 
enable it. I'd rather either show all and disable what you don't want to show; 
or show none and enable what you want to show.

I prefer the suppression route myself. For now, I'll leave this as is.


- Matt


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3377/#review11418
-----------------------------------------------------------


On April 9, 2014, 4:08 p.m., Matt Jordan wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/3377/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 4:08 p.m.)
> 
> 
> Review request for Asterisk Developers, Corey Farrell and wdoekes.
> 
> 
> Repository: Asterisk
> 
> 
> Description
> -------
> 
> Note: while an improvement to Asterisk, this patch only affects Asterisk when 
> compiled in -dev-mode. Since it has benefit only for developers looking to 
> fix bugs, I'm proposing it for Asterisk 1.8+. The removal of refcounter 
> should be done in trunk only.
> 
> Asterisk uses reference counted objects. A lot. As their use has spread, the 
> bugs related to reference counting errors has grown as well. Central to 
> resolving reference counting issues is the usage of REF_DEBUG; unfortunately, 
> REF_DEBUG has had several problems:
> (1) It could not be enabled through menuselect
> (2) When not enabled globally, updates to objects were often lost, resulting 
> in insufficient data to resolve problems
> (3) The format of the ref debug log file was not suitable for parsing
> 
> This patch changes REF_DEBUG in the following ways:
> (1) It makes REF_DEBUG a meneselect item when Asterisk is compiled with 
> --enable-dev-mode
> (2) The ref debug log file is now created in the AST_LOG_DIR directory. Every 
> run will now blow away the previous run (as large ref files sometimes caused 
> issues). We now also no longer open/close the file on each write, instead 
> relying on fflush to make sure data gets written to the file (in case the ao2 
> call being performed is about to cause a crash)
> (3) It goes with a comma delineated format for the ref debug file. This makes 
> parsing much easier.
> (4) It throws out the refcounter utility and goes with a python script 
> instead.
> 
> 
> Diffs
> -----
> 
>   /branches/1.8/utils/utils.xml 410891 
>   /branches/1.8/utils/refcounter.c 410891 
>   /branches/1.8/utils/Makefile 410891 
>   /branches/1.8/main/utils.c 410891 
>   /branches/1.8/main/logger.c 410891 
>   /branches/1.8/main/astobj2.c 410891 
>   /branches/1.8/main/asterisk.c 410891 
>   /branches/1.8/include/asterisk/utils.h 410891 
>   /branches/1.8/include/asterisk/astobj2.h 410891 
>   /branches/1.8/contrib/scripts/refcounter.py PRE-CREATION 
>   /branches/1.8/channels/chan_sip.c 410891 
>   /branches/1.8/build_tools/cflags.xml 410891 
> 
> Diff: https://reviewboard.asterisk.org/r/3377/diff/
> 
> 
> Testing
> -------
> 
> Things spit out ref logs and the script parses them. Example below:
> 
> ==== Object 0x21ed9b8 history ====
> features.c[5427]:create_parkinglot 1  - [**constructor**]
> features.c[5707]:build_parkinglot +1  - [1]
> features.c[5392]:parkinglot_unref -1  - [2]
> features.c[6358]:build_dialplan_useage_map +1  - [1]
> features.c[6358]:build_dialplan_useage_map -1  - [2]
> features.c[4985]:find_parkinglot +1  - [1]
> features.c[5392]:parkinglot_unref -1  - [2]
> features.c[6358]:build_dialplan_useage_map +1  - [1]
> features.c[6358]:build_dialplan_useage_map -1  - [2]
> features.c[4955]:do_parking_thread +1  - [1]
> features.c[4957]:do_parking_thread -1  - [2]
> astobj2.c[955]:cd_cb_debug -1 deref object via container destroy - [1]
> astobj2.c[955]:cd_cb_debug -1 deref object via container destroy - [**call 
> destructor**]
> 
> 
> Thanks,
> 
> Matt Jordan
> 
>

-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-dev

Reply via email to