Click here to Skip to main content
15,512,908 members

Rob Philpott - Professional Profile



Summary

    Blog RSS
29,140
Author
13,231
Authority
14,871
Debator
119
Editor
246
Enquirer
670
Organiser
4,263
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.

Groups

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

United States United States
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.

For member complaints and suggestions, contact the forum administrator at ...
cp[soapbox1[0 at gmail.com
Remove the [ characters and replace them by a period.
This is a Social Group
This member has Member status in this group

194 members

Reputation

Weekly Data. Recent events may not appear immediately. For 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. The member types column lists member types who gain the privilege regardless of their reputation level.

ActionAuthorAuthorityDebatorEditorEnquirerOrganiserParticipantIf OwnerMember Types
Have no restrictions on voting frequencysilversilversilversilver
Bypass spam checks when posting contentsilversilversilversilversilversilvergoldSubEditor, Mentor, Protector, Editor
Store personal files in your account areaplatinumplatinumSubEditor, Editor
Have live hyperlinks in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Have the ability to include a biography in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Edit a Question in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Edit an Answer in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Delete a Question in Q&AYesSubEditor, Protector, Editor
Delete an Answer in Q&AYesSubEditor, Protector, Editor
Report an ArticlesilversilversilversilverSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending ArticlegoldgoldgoldgoldSubEditor, Mentor, Protector, Editor
Edit other members' articlesSubEditor, Protector, Editor
Create an article without requiring moderationplatinumSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending QuestionProtector
Approve/Disapprove a pending AnswerProtector
Report a forum messagesilversilverbronzeProtector, Editor
Approve/Disapprove a pending Forum MessageProtector
Have the ability to send direct emails to members in the forumsProtector
Create a new tagsilversilversilversilver
Modify a tagsilversilversilversilver

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


 
GeneralNasty, nasty deadlock using log4net and multiple appenders PinPopular
Rob Philpott3-May-12 5:53
Rob Philpott3-May-12 5:53 
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.

GeneralRe: Nasty, nasty deadlock using log4net and multiple appenders Pin
Preetam U Ramdhave9-Feb-15 2:48
Preetam U Ramdhave9-Feb-15 2:48 

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

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.