|
I installed the evaluation version of your software. It seems to work fast and well. However I was surprised to see that it reported quite a few gdi and window handle leaks in my MFC program (toolbars, menus, you name it). I created a simple SDI app with VC++6.0 AppWizard and ran through MV, same thing.
Is it
- my misinterpretation ?
- MV misinterpreting what MFC does?
- something else ?
Also, it reports file handle leaks when I use the MFC CStdioFile class. Does MFC really leak? Any explanation will be appreciated.
Thanks
|
|
|
|
|
We replied to Bugra the same day Bugra wrote this comment. However we chose to delay replying here until we had fixed the bug that Bugra reported.
Bugra Barin wrote:
I installed the evaluation version of your software. It seems to work fast and well. However I was surprised to see that it reported quite a few gdi and window handle leaks in my MFC program (toolbars, menus, you name it). I created a simple SDI app with VC++6.0 AppWizard and ran through MV, same thing.
Is it
- my misinterpretation ?
- MV misinterpreting what MFC does?
- something else ?
Some window handles, menu handles and so forth are created by MFC, but not explicitly destroyed by MFC. You can verify this yourself by hooking the appropriate DestroyWindow() call in user32.dll and looking for the Window handle passed to this call. Some of the MFC window handles for the default objects in an MFC AppWizard generated classes are not explicitly destroyed. As such they will be reported as a leak. Competing software tools also show the same window handles leaking. You can filter these reports using the powerful filtering mechanism in Memory Validator.
Also, it reports file handle leaks when I use the MFC CStdioFile class. Does MFC really leak? Any explanation will be appreciated.
This is a bug, which has been fixed.
|
|
|
|
|
Anonymous wrote:
Some window handles, menu handles and so forth are created by MFC, but not explicitly destroyed by MFC. You can verify this yourself by hooking the appropriate DestroyWindow() call in user32.dll and looking for the Window handle passed to this call. Some of the MFC window handles for the default objects in an MFC AppWizard generated classes are not explicitly destroyed. As such they will be reported as a leak. Competing software tools also show the same window handles leaking. You can filter these reports using the powerful filtering mechanism in Memory Validator.
Memory Validator V3.17 now handles these Window handles differently. Child windows of a window destroyed with DestroyWindow() are no longer reported as leaked.
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk/rsi.html
|
|
|
|
|
Hi Stephen
This product looks very good.
I had a good experience downloading the evaluation version (2.55), and having a session with my Application. (Sound and Vibration realtime analysis app).
As the listview in thememory tab was flooded with allocations, i wanted to try the tutorial to learn how the various filter settings work.
But i get a linker error when i try to build the TestStak solution in visual studio 7.0 (win XP)
'fatal error LNK1181: cannot open input file '..\testlibrary\debug\testlibrary.lib'
I searched my entire harddisk for that file. without finding it.
Can you fix this problem? Is it because i am using the evaluation version?
This product seems easy to use.
It seems though that it finds many memory leaks, that are not memory leaks. But this need further investigation from my side.
It is very likely that my company will buy this tool!!!
Best regards Christian Johansen
|
|
|
|
|
Dear Christian,
Thanks for your input and the report of the incorrect link specification for the memoryValidatorExample, Debug Configuration.
The Release configuration has the correct link specification. The Debug configuration had been modified for testing and the tester had failed to reset the link testing. Please accept our apologies for this error. This shouldn't (and normally doesn't) happen.
To correct this simply replace the entry for
testlibrary.lib
with
..\stublib\debug\svlMemoryValidatorStubLib.lib
The Debug and Release configurations demonstrate how to use the Memory Validator API by linking to it.
The DebugNonLink and ReleaseNonLink configurations provide the same test executable without the few functions linked to the API.
We have updated the build available from the website with a project that fixes the above error.
Regarding your reports of too many memory leaks, this is unlikely, as we have put a great deal of effort into reporting the correct memory leaks, and not reporting spurious leaks. However if an error forces Memory Validator to detach from your executable early, Memory Validator will be prevented from seeing any deallocations, and the memory thus referenced would show up as a memory leak in that case. Without knowing more about your particular application and how you are using Memory Validator (using to monitor an application, a service, COM object in dllHost.exe etc) and so on, it is not possible to provide a more authoritative answer.
If you are having problems or if you do not understand the data presented to you, please contact us at support@softwareverify.com and we will be pleased to help. We do not provide customer support on public discussion forums.
Regards
Stephen Kellett
Software Verification Support
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk/rsi.html
|
|
|
|
|
Nice summary, but I noticed you never mentioned anything about multithreading. How good does it handle apps which have a good number of threads flying around?
Thanx
swinefeaster
Check out Aephid Photokeeper, the powerful digital
photo album solution at www.aephid.com.
|
|
|
|
|
Hi,
Memory Validator handles multithreaded applications just fine.
I didn't mention multithreading as it didn't occur to me to do so.
As well as the many filtering options available, you have the ability to filter data on a per thread basis, so if you don't want to look at data from certain threads (you know they are OK), you can filter that data out.
You can also detect memory allocated on one thread that is deallocated in another thread. There is nothing wrong in doing this, message queue systems quite often do this. However some program designs may not want this, and automating the detection of this is a useful aid for those situations.
If you are interested in a program to identify deadlocks and so forth, we have an application, Thread Validator which will be going into beta in the next few days that will address this area.
Regards
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk/rsi.html
|
|
|
|
|
Thank you Stephen! Your software validation programs sound very interesting and useful. I will have to set aside some time and seriously check them out (if not in the near future, then eventually).
Best regards,
swinefeaster
Check out Aephid Photokeeper, the powerful digital
photo album solution at www.aephid.com.
|
|
|
|
|
Memory Validator Version 2.12 Evaluation is now available for download.
- Version 2.12 includes support for NT services.
- Debug information (PDB) files can now be found in any directory you specify, rather than just the current directory.
- Miscellaneous bug fixes.
- Updated help manual.
Regards
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk
|
|
|
|
|
Memory Validator 2.10 is now available for download.
Memory Validator 2.10 provides a new method for launching programs and attaching to them that is even more reliable than the previous methods. Applications such as Visual Cafe that didn't like being started in Suspend mode can now be started and their execution monitored from the application entry point (winMainCRTStartup or equivalent).
New wizards simplify the selection of settings and launching of programs.
Cheers
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk
|
|
|
|
|
Every launch method I've attempted for my application fails. The inject method will start up sometimes, though once it does the program's operation seems to deviate from the norm.
What I wanted to ask though...
During the install of MV a window asking for my Windows 2000 disk appeared. Apparently it wanted to re-install some DLLs that had been updated since the operating system was loaded. I didn't have the disk with me at the time, so I tried to make do without it. (Results noted above)
This morning I re-installed MV expecting to be prompted again for my Windows CD. No prompt. Even after an un-install the results were the same. Why does the part of the installation script that relies on third-party material only give you one chance to have that material available?
>>>-----> MikeO
|
|
|
|
|
Mike Osbahr wrote:
Every launch method I've attempted for my application fails. The inject method will start up sometimes, though once it does the program's operation seems to deviate from the norm.
Hi Mike,
This shouldn't happen. Obviously, programs such as Memory Validator are working blind, in that they know nothing about your program, so it is possible that an application exists which causes us problems that we didn't find in the applications we tested during development. We've tested in excess of a 1000 applications on each of NT/2000/XP.
Could you contact me at support@softwareverify.com so that we can find out what is going wrong for you?
During the install of MV a window asking for my Windows 2000 disk appeared. Apparently it wanted to re-install some DLLs that had been updated since the operating system was loaded. I didn't have the disk with me at the time, so I tried to make do without it. (Results noted above)
This should not happen. Memory Validator does not ask for your Windows CD. Memory Validator installs the latest DbgHelp.dll, MSVCRT.DLL, MFC42U.DLL, MSVCP60.DLL, and PSAPI.DLL. These are only installed if there are more recent than the ones on your machine.
This morning I re-installed MV expecting to be prompted again for my Windows CD. No prompt. Even after an un-install the results were the same. Why does the part of the installation script that relies on third-party material only give you one chance to have that material available?
Memory Validator won't prompt you for the CD, because it does not prompt you for a CD. Memory Validator's install does not rely on the Windows CD or any other CD, and therefore will not prompt you for it.
I think something must have gone wrong with the install. We've never heard of this sort of thing happening before. Please contact me at support@softwareverify.com and we can work out what happened.
Regards
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk
|
|
|
|
|
Thought it only fair to put it in writing here that most of the problems I was experiencing were operator error. I had recently configured the app for remote debugging, so most of the DLL hooks were failing. After resetting the app for local execution the MV program has worked as advertised.
Now I just have to learn how to use it
>>>-----> MikeO
|
|
|
|
|
Mike Osbahr wrote:
Thought it only fair to put it in writing here that most of the problems I was experiencing were operator error. I had recently configured the app for remote debugging, so most of the DLL hooks were failing. After resetting the app for local execution the MV program has worked as advertised
Thanks for the clarification Mike.
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk
|
|
|
|
|
There was a bug in the new startup mode that only manifested with certain programs (usually a single step exception or more rarely an access violation).
This has been fixed with version 2.12 (see other posting)
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk
|
|
|
|
|
Stephen-
That was a good summary and I found your reply to the comparison with BoundsChecker useful.I am developing a persistent object storage engine. Each instance of the persistent database uses its own heap.
My questions are :
1. Can your product handle VirtualAlloc/Free ? (I think you answered yes)
2. The persistnet engine uses exception handlers to trap illegal access ? Would this somehow interefere with your product ?
Thanks -
Vivek
|
|
|
|
|
Vivek Rajan wrote:
That was a good summary and I found your reply to the comparison with BoundsChecker useful.I am developing a persistent object storage engine. Each instance of the persistent database uses its own heap.
My questions are :
1. Can your product handle VirtualAlloc/Free ? (I think you answered yes)
Yes, Memory Validator handles VirtualAlloc/Free and VirtualAllocex/FreeEx
The example program that ships with Memory Validator (source code supplied) will allow you to verify this claim.
2. The persistnet engine uses exception handlers to trap illegal access ? Would this somehow interefere with your product ?
No, your use of exception handlers should not interfere with the correct operation of Memory Validator, and vice versa. If it does, let me know and we'll fix it. Many programs make quite legitimate use of exception handlers and a software tool such as Memory Validator and/or its competitors should not impede the use of exception handlers in this way.
An good example of the correct use of exception handlers is trapping the use of uncommitted virtual memory when accessing a reserved area of memory. The exception handler would trap the access to the uncommitted, but reserverd, memory, commit the next page (or larger area) and carry on as if nothing had happened. Jeffrey Richter's excellent book (Programming Applications for Microsoft Windows 4th Edition,chapter 17 covers just such a topic.
Regards
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk
|
|
|
|
|
Chris, great idea for a new section.
I have one question for the Stephen. We use boundschecker all the time and find it extremely useful. How does your product differ or compare to boundschecker and what are its advantages?
Brent
|
|
|
|
|
Hi Brent,
I can't comment directly on BoundsChecker as I have never used it. NuMega declined to give me an evaluation license when they found out who I was. They can have an evaluation of Memory Validator though. I found their website to be rather uninformative as to what the product can and cannot do. However you can find a brief feature list for Memory Validator here
All answers given here are based on what people have told me and what I have been able to determine from their product literature/website. Its all from memory, so please correct me if I am wrong.
From what I understand, Boundschecker requires you to recompile and relink your product (this may have changed), where as Memory Validator doesn't. For anything other than trivial projects, this is going to be a serious time waster.
Memory Validator is 100% accurate at detecting memory leaks, based on the testing we have done. If Memory Validator sees the allocation (i.e. all allocations after Memory Validator has attached to your program), then Memory Validator will track the deallocations until the program shuts down (including until after MSVCRT(D).DLL has unloaded deep inside ExitProcess). So we see all CRT deallocations during the shutdown process. Memory Validator tracks all memory allocation types, I'm not sure that BoundsChecker does this.
Memory Validator tracks handle allocations. Memory Validator can detect uninitialised memory and can detect double deletes and buffer access errors. I don't know if BoundsChecker does this.
I understand BoundsChecker checks Win32 APIs for parameter validity. Memory Validator does not do this - it is not intended to.
Memory Validator provides many methods for querying the data you have collected - including historical data about memory that has been allocated and deallocated. I don't think there is any other product in this market that allows you to query this data to find data hotspots, or drill through the allocations to find references to objects that were deleted a long time before you thought they were.
However, if you want an interesting comparison, take the example application that ships with Memory Validator Evaluation. Edit teststak.cpp to enable the slow startup simulation and set to do 1,000,000 allocations. On a 1Ghz Athlon with 512Mb, this takes 58 seconds to start the application with Memory Validator tracking all allocations. Then close the demo. Memory Validator will detect the application has closed and display the 1,000,000 leaked items to you. Try this with BoundsChecker. If you do this with boundschecker can you examine all the allocations, reallocations deallocations that occurred within the lifetime of the program (even though the program has now gone?). You can with Memory Validator.
Want to export this data for a regression test report, or the basis for a Memory leak SPR? HTML or XML? No problem.
Memory Validator provides support for regression testing, BoundsChecker, to my knowledge does not.
Memory Validator also provides support for instrumenting and tracking user defined heaps and referenced counted objects. I don't know of any other memory leak tracking tool that can do this.
Finally, we aim to supply bug fixes and responses to problems on a timely basis. One of our customers told us of a product they were using that only ships bugs fixes once every six months, and often state that there is no gaurantee that your issue will be fixed. That is why they are now a customer of Software Verification. For them it was a major issue. So they changed.
Since April 15, 2002 we have shipped 9 minor bug fixes and upgrades and performance improvements, based on user feedback, internal research, and bugs found in internal testing and future product development (*). We have some more changes that will make it into the product next week.
For Example: Last week, a user named Sein, on this web site, mentioned a problem with the VisualStudio.net symbolsnot being picked up, we had a fix posted to this website within hours (1 of which was spent installing the latest VisualStudio.net on a vanilla machine to reproduce the bug) and a new upload with the fix in it on the website, the same evening (we only do uploads in the evening).
(*) We'll be announcing a public beta next week of a new product for Win32.
If you have any further questions, please let me know.
Cheers
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk
|
|
|
|
|
Here are some more stats about Memory Validator.
1Ghz Athlon, 512Mb.
Adobe Acrobat Reader 4.0
With the Wise For Windows Installer PDF file, 649 pages long. Using Adobe Acrobat Reader 4.0, scroll from top to bottom of the document, one page at a time:
Not using Memory Validator: 1min 30secs
Using Memory Validator: 1min 42secs
Total number of allocations > 700,000, thats a 13% overhead, whilst
tracking all memory allocations, deallocations, and all handle allocations
etc.
Using the sample allocation that ships with Memory Validator and editing teststak.cpp to enable the appropriate slow startup simulation test.
100,000 allocations on startup: 8 seconds
200,000 allocations on startup: 13 seconds
500,000 allocations on startup: 30 seconds
1,000,000 allocations on startup: 58 seconds
13% overhead is close enough to normal speed that you can happily do interactive work without being put off by the speed penalty of the tool. This was a design requirement as one of our customers is a 3D mechanical CAD vendor where high speed 3D manipulation is a must.
Many applications perform about 100,000 allocations on startup.
The following products all startup with very little difference between the normal startup time and the startup time with Memory Validator. Version numbers are provided for clarity. We haven't selected these versions for any reason other than they are the versions installed on the test machines.
- Symantec Visual Cafe 3.0
- Adobe Acrobat Reader 4.0
- Developer Studio 6.0
- Internet Explorer 5.0
- Microsoft Word
For those, that have doubts, try the test outlined above with your tool and Memory Validator. Take the test to the end, including shutting the example down and waiting for the time to calculate the leaks. Try both release and debug versions of the example. You'll find it interesting
Regards
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk
|
|
|
|
|
Stephen,
Thank-you for responding to my question. I appreciate the effort you put into the response and I enjoyed reading it. I'll certainly give the product a trial run on some of our products.
Thanks again,
Brent
|
|
|
|
|
Brent,
Not a problem. Any question, just ask. If there is a feature you want and we haven't provided it, and the feature request matches the product, there is a good chance we'll implement it for you.
How many vendors of software tools offer that sort of service?
Many of the features in Memory Validator are there because some of our existing customers asked for the features.
Regards
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk
|
|
|
|
|
I'm headed that way at the moment ( coding at work AND home is not helping, but... ).
What can I do to avoid it/slow it down ? How bad can it get ? I have constant pain in my left arm, and I often cannot feel my fingers in both arms. My left upper arm especailly sometimes aches so I need to stop typing and take a rest.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
And you don't spend much time with the opposite sex working day and night, unless the pizza delivery person happens to be young, cute, single and female. I can assure you, I've consumed more than a programmer's allotment of pizza, and these conditions have never aligned. - Christopher Duncan - 18/04/2002
|
|
|
|
|
Hi Christian,
RSI, a very complicated subject. I'll describe what happened to me. There is some strange bits of history that I'll include as for some readers, they may recognise bits of themselves.
I was first started showing signs of RSI in about 1988, I guess, which just manifest as back pain (early signs of a posture problem, not sitting properly, etc). I finally got ill at the local folk festival in July 1993. I noticed that the tingling I'd had in my hands in the past that had always gone away over a weekend, this time I had it all weekend and it was still there on Monday morning. Fast forward to December of the same year and I went horse riding (which always provided some release from the pain, because of the stretch tension provided by the reins), after that the release from the pain had gone in about 15 minutes. I hadn't even got to work. So I went in and told them I needed medical help. We managed to find an RSI specialist on Harley Street, London. I went to see him, practically passed out twice because the tests he did were so painful (and wouldn't be painful to a healthy person). A very expensive 20 minutes consultation. However he then found my a suitable specialist that he had trained that lived only 45 minutes from where I lived.
I got very ill, ill to the point where I couldn't hold a pint of beer (0.6 litres for you metric folk) with using both hands and being in pain. I ended being registered disabled and I banned myself from driving for a while (changing gear and turning the wheel were too painful). Later on, at one point, both of my arms were warm down to the wrists, and both my hands were cold and blue. Weird, but caused by RSI.
My RSI was caused by being a very prolific software engineer (I was 3 months *ahead* of the plans my manager had for the work I was doing at the time (X11/Motif on 7 Unix platforms, GIS work) - and yes his plans were realistic, everyone else was on schedule). Unreal. I was also playing guitar in the evening. This is referred to as "double hand use". In other words you never give your body any time to recover. The damage builds up over years and years. Often you get a small does of RSI and it goes away. My physio tells me that typically the third time you get it, it doesn't go away and thats the one that changes the rest of your life.
Fundamentally, RSI is a posture injury. Get the posture right and you'll start to heal. Get the posture right and you can do more, whilst damaging yourself less. At the end of the day your body is a machine, albeit an organic self repairing one (I sound like Babylon 5). If you use it incorrectly,through bad posture, or you overuse it, by over coding, or playing musical instruments or high impact sports (squash - high impact on your wrist), then you'll get damage.
There are many views on how to treat the many forms RSI. I was suffering from epicondylitis (tennis elbow), carpal tunnel syndrome (tired wrists is how you'll tell) and tendonitis. Fortunately I didn't get bursitis (spelling) or tenosynuvitis (which is where the fluid in your knuckles dries up, then your body overcompensates and produces so much your hands may end up looking like boxing gloves (no exaggeration).
I was treated by a phsio that specialised in back injuries and RSI. She stressed that a physio that is a generalist and not a specialist in RSI may do more damage because RSI is a specialist injury and treatment is not obvious. I was given a series of exercises, firstly to increase my range of movement (by the time I met her I had been off sick for a while, in bed and my posture was really bad). Once we had the range of movement back to normal, I was given more exercises to increase my strength (I had lost much of my strength as it was painful to do anything, so you tend to stop). This treatment lasted for about 6 months, when I could finally type again.
At that point I resigned my job (as I felt I was at the front of the redundancy queue because of my illness) and became an independent consultant. This was in part so that I could manage my RSI better by only working when I wasn't in pain. Some people think that RSI is an excuse for the lazy to claim sick pay. I find the view that RSI is a malingerers disease very offensive. Why would I want to be off work, when my mortgage and other bills are not being paid? So if anyone comes at you with that argument, point out to them that you are suffering from a genuine illness.
RSI may well cause you mental stress, as you don't know what to do, or how to cope, and don't know where to get advice. I had to spend months doing my exercises 3 or 4 times a day, 20 to 40 minutes each time. Then go for a long walk to improve my posture. I live in the middle of the fens (marsh flatlands) in East Anglia, so I had plenty of space to do this. However I couldn't handle what was happening at the time, and spent much of my time
in oblivion, courtesy of the local off-license.
Most of the exercises take the form of various stretches. Don't assume any old stretch will do. It won't. Get advice from a physio. And pay for it. Waiting on the national health, or whatever you have in your country, is wasting time. RSI doesn't wait for anyone. Also, I found that bypaying for the advice, I one day found myself not wanting to do the exercises. I was fed up. Then I thought "why am I paying this money out, only to ignore her advice?". That was a real turning point. The therapy they use on my was called
"Adverse Mechanical Tension", where they put stretches along your nerves to undo the nerve compression injuries that are common in RSI. To stretch a human nerve it needs to be stretched for 7 seconds (so count to 10). Nerves are elastic and don't stretch until they have been stretched for 7 seconds. Strange but true.
I still suffer from RSI, although I manage it a lot better. I no longer play the guitar, but do play mandolin, bagpipes and meleodeon (all of these need a shorter hand stretch to play). When my RSI gets worse, I stop playing the instruments, maybe do some research instead of programming work, go walking, and start doing the exercises again. I swim 4 times a week and take vitamin B6. Vitamin B6 is associated with tendon sheath healing. Other B vitamins are not a substitute for B6. In the UK, you need to go to your doctor to get sufficient does of B6 because then made this a restricted vitamin a few years ago because of media/health scare over-reaction.
Fast forward 8 years to the present day, and I'm working for Software Verification, working on the types of software tool I always found interesting.
RSI won't end your life, but it will change the way you live it.
If you treat it soon enough and learn to listen to your body (you'll get very good at this if you get ill enough) you can carry on pretty much as normal. I think one of the worst things for me, is that I often find holding hands can be quite painful, depending on my RSI. Thats not very nice when you are walking in a forest or on a beach with your girlfriend...
My advice to you, Christian, is to stop the out of work coding immediately (or after Monday so you can finish your screen saver , and see a suitably qualified physiotherapist. If you play any instruments or do any sports that are not running or swimming, again I'd stop doing those temporarily.
Get an egonomic keyboard, a split keyboard. Get a good quality chair. Set the chair up so that you sit up straight, with your hips slighlty higher than your knees. *Then*, and only then, setup the desk to suit the height you are now sitting at. That means propping the desk up, or shortening the desks legs.
Yes, the furniture should match your dimensions, not the other way around. Now
you've got the desk sorted out, set the monitor up, so that the top of the monitor screen is roughly level with your eyes. Measure an 11' angle and follow that. That should be where the bottom of the screen is. Roughly. Using that you can work out where the monitor should be (how far away).
Hand use:
- From above, your forearm and hand should be in line (not bent).
- From the side, your fore amd hand should be in line. Your wrist should not be below or above this line.
These requirements mean that you are putting less strain on your arms.
Don't let anyone inject you with cortisone. You can only have this 3 times in your life (it is not good for your bones). Also this is treating the symptoms, not the cause. Its a painful injection, I'm told, but does provide short term relief.
Carpal tunnel surgery. I'd advise against it, if you can get proper medical treatment you won't need it. I've heard some nightmare stories about it taking up to 6 months for the operation to heal. However I met a doctor last year, and she had had both her wrists done for this operation and was back at work a few weeks later. I guess there is a lot of variance with this operation.
Do seek advice. Don't think I'll live with it, it won't happen to me. Everyone thinks that and they always realise they were wrong, when it is too late.
I was lucky, not many people get as ill as I did and get to keep their career. I had no idea what I was going to do if I couldn't use my hands to type. This is just part of the story, but I have never gotten around to writing it.
Please seek medical advice
I hope that hasn't terrified anyone too much. The reality was worse than what I've written here.
I've tried to write down roughly most of what happened, even the darker bits. Its not completely in chronological order, as writing one things makes me think "I should mention this now.." and I change subject.
Do everything you can to prevent this happening to you.
Cheers
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk
|
|
|
|
|
Memory Validator V2.09 is available for download.
V2.08 had an occasional bug that may cause the application to crash when a session is deleted, if no other session is available.
Versions prior to V2.09 may not provide correct symbols when used with Visual Studio.net. V2.09 fixes this problem.
Versions prior 2.06 had a performance issue under certain circumstances, and also a possible crash when a session is deleted. Versions after 2.06 have these bugs fixed.
If you were evaluating Memory Validator with a version prior to 2.09, please pick up the latest evaluation version.
Next week we hope to introduce some wizard based interactions to simplify some of the user interface choices for customers that are new to the product, whilst retaining existing interfaces for expert users.
Regards
Stephen Kellett
--
Memory Validator. Faster Leak Detection, Better Analysis.
http://www.softwareverify.com
http://www.objmedia.demon.co.uk
|
|
|
|
|