Click here to Skip to main content

Rob Philpott - Professional Profile

Summary

11,077
Author
7,363
Authority
5,679
Debator
35
Editor
100
Enquirer
212
Organiser
1,654
Participant
I am a .NET architect/developer based in London working mostly on financial trading systems. My love of computers started at an early age with BASIC on a 3KB VIC20 and progressed onto a 32KB BBC Micro using BASIC and 6502 assembly language. From there I moved on to the blisteringly fast Acorn Archimedes using BASIC and ARM assembly.
 
I started developing with C++ since 1990, where it was introduced to me in my first year studying for a Computer Science degree at the University of Nottingham. I started professionally with Visual C++ version 1.51 in 1993.
 
I moved over to C# and .NET in early 2004 after a long period of denial that anything could improve upon C++.
 
Recently I did a bit of work in my old language of C++ and I now realise that frankly, it's a total pain in the arse.
Member since Wednesday, October 29, 2003 (9 years, 6 months)
  • 30 Oct 2005: C# Sep 2005

 

Contributions

Articles 2 (Legend)
Tech Blogs 0
Messages 1,344 (Master)
Q&A Questions 4
Q&A Answers 78
Tips/Tricks 0
Comments 80

Links

Groups

Below is the list of groups in which the member is participating


Soap Box 1.0
United States United States
Member
Social Group
members

This _private_ forum is set up to be a place where political and social issues, including American politics and global warming, can be discussed in a reasonably civil manner. Anyone who has been an active member* of Code Project for six months is welcome to apply for membership but this forum does not tolerate trolling posts, or posters who wish to be disagreeable. Those who choose to become uncivil, insulting, or childish will be warned and, for repeated violations, removed from membership.
 
* That means that you have posted regularly or had at least one article published.

Reputation

For more information on Reputation please see the FAQ.

Privileges

Members need to achieve at least one of the given member levels in the given reputation categories in order to perform a given action. For example, to store personal files in your account area you will need to achieve Platinum level in either the Author or Authority category. The "If Owner" column means that owners of an item automatically have the privilege, and the given member types also gain the privilege regardless of their reputation level.

ActionAuthorAuthorityDebatorEditorEnquirerOrganiserParticipantIf OwnerMember Types
Have no restrictions on voting frequencysilversilversilversilverAdmin
Store personal files in your account areaplatinumplatinumSitebuilder, Subeditor, Supporter, Editor, Staff
Have live hyperlinks in your biographybronzebronzebronzebronzebronzebronzesilverSubeditor, Protector, Editor, Staff, Admin
Edit a Question in Q&AsilversilversilversilverYesSubeditor, Protector, Editor, Admin
Edit an Answer in Q&AsilversilversilversilverYesSubeditor, Protector, Editor, Admin
Delete a Question in Q&AYesSubeditor, Protector, Editor, Admin
Delete an Answer in Q&AYesSubeditor, Protector, Editor, Admin
Report an Articlesilversilversilversilver
Approve/Disapprove a pending ArticlegoldgoldgoldgoldSubeditor, Mentor, Protector, Editor, Staff, Admin
Edit other members' articlesSubeditor, Protector, Editor, Admin
Create an article without requiring moderationplatinumSubeditor, Mentor, Protector, Editor, Staff, Admin
Report a forum messagesilversilverbronzeProtector, Editor, Admin
Create a new tagsilversilversilversilverAdmin
Modify a tagsilversilversilversilverAdmin

Actions with a green tick can be performed by this member.


 
You must Sign In to use this message board.
Search this forum  
GeneralNasty, nasty deadlock using log4net and multiple appenders Pin
Thursday, May 3, 2012 4:53 AM by Rob Philpott
Well, that's a day of my life wasted. I've had the situation today that when I start my application 30% of the time it wouldn't make it through its initialisation and would deadlock deep in log4net code. Inspection of locked resources showed one thread had locked the RollingFileAppender and was waiting for a lock on the ConsoleAppender, and another thread the other way around, the classic deadly embrace.
 
How is this possible? It's hard, but can happen if one of the appenders itself attempts to do some logging while processing an existing logging call.
 
To cut a long story short, you need to make sure that any ToString() methods do not do any logging. I had exactly that, a ToString() method which presented different output depending on whether an object was valid or invalid, and where it was invalid it logged the fact. When you use something like ILog.DebugFormat, the arguments are evaluated late in the day, seemingly inside an appender, most likely so that the overhead is not present if logging levels don't require it. Thus one appender was trying to log to the other and the nasty outcome.
 
I was looking for this by inspecting the stack trace for flow out of our code, into log4net, and back into our code before going to log4net again and sure enough it was there. BUT, I couldn't see it for a long time as I was inspecting the call stack from the Threads window which doesn't show you the whole stack frame, just the top part of it. You need to switch to that thread and examine the stack trace window from there.
 
Nasty business, but quite interesting if you're as boring as I am.
Regards,
Rob Philpott.

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   


Advertise | Privacy | Mobile
Web04 | 2.6.130523.1 | Last Updated 24 May 2013
Copyright © CodeProject, 1999-2013
All Rights Reserved. Terms of Use
Layout: fixed | fluid