Question

InheritsFrom/TraverseClients Problem

Asked by: nacker2000

Hi all,

I seem to be getting a random problem and because it doesn't happen all of the time it's hard to debug.

I am getting the following error "Exception EAccessViolation occured in System.TObject.InheritsFrom" when I am creating a form. The problem seems to have only started recently during a big change to some code.

I need to know what InheritsFrom and TraverseClients is and what triggers it so I can attempt to find to find the problem.

This error not only happens randomly but when it does it's like it gets stuck in a loop because my error log can grow to 1MB quite easily in a few seconds.

Here is part of the log:

31/10/2007 20:24:40.250 Exception EAccessViolation occured in System.TObject.InheritsFrom at 29 in file IdSysBase.pas
Message: Access violation at address 00404474 in module 'Project1.exe'. Read of address FFFFFFDC
Call stack:
[00404474] System.System.TObject.InheritsFrom (Line 29, "IdSysBase.pas")
[00404793] System.System.@HandleAnyException (Line 29, "IdSysBase.pas")
[00473432] Forms.Forms.TraverseClients
[00473432] Forms.Forms.TraverseClients
[00473432] Forms.Forms.TraverseClients
[004734A0] Forms.Forms.TCustomForm.UpdateActions
[00477662] Forms.Forms.TApplication.DoActionIdle
[00476CDF] Forms.Forms.TApplication.HandleMessage
[0071370E] Project1.Project1.Finalization (Line 327, "unitViewProfile.pas")

Ignore the IdSysBase.pas part, this is just an Indy unit picking up the error, not sure why it does but I know for a fact it's not the problem, it must have an exception handler in it. Any exceptions I seem to have always include this unit.

Line 327 on unitViewProfile.pas is actually the "end." statement at the bottom of the unit.

Any help is greatly appreciated because this is an urgent problem.

Thanks

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2007-11-01 at 05:46:54ID22932098
Tags

exception

,

eaccessviolation

,

violation

Topic

Delphi Programming

Participating Experts
3
Points
500
Comments
8

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. EAccessViolation Error
    This question partly refers to a previous question (Records and Longstrings 26/11/97). Anilm gave me the following code (the kstring part) so I could try to save a record with more than 255 characters. I have tried to implement it, but keep getting an EAccessViolation error. ...
  2. EAccessViolation
    Is there any way to determine what type of EAccessViolation occured and where in the C++ code? I can find the error in the assembly language, but it would be nice to know where it happened in the C++ code. Debugging is impossible if I can't find the error.
  3. Rogue EAccessViolation
    I have a Delphi 3 document managment system running on ten NT workstations and a Novell network. The application runs great except that once every few weeks, a machine get the following error: Exception EAccessViolation in module xxx.exe at 00094458. Access violation at ad...
  4. EAccessViolation
    When referring to another unit in a Delphi 4 app I get the following error... Project SysAdmin.exe raised exception class EAccessViolation with message 'Access violation at address 0046C332 in module 'SysAdmin.exe'. Read of address 000002F0...' This happens when a unit call...
  5. Application error: Exception EAccessViolation
    The delphi code complies fine. whereas on running the application, I get an error which is as follows: Debugger Exception Notification: Project raised exception class EAccessViolation with message 'AccessViolation at address 005C73F4 in module ---.exe' On running it again at...
  6. EAccessViolation
    Hello experts, When I run my application (which starts with showing a loginform), I get the following error: Project SafetyManager.exe raised exception class EAccessViolation with message 'Access violation at address 00BE29C5. Read of address FFFFFFFF'. Process stopped. Use...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: TheRealLokiPosted on 2007-11-01 at 20:20:15ID: 20198217

First thing I'd check is that the "inherited" objects all handle the Create and Destroy correctly.
I'm referring to inherited and override.
eg.

type TMybaseObject = class(TObject)
public
  sometext: string;
  constructor Create(s: string); virtual
  constructor Destroy; override;
..
end;
..
type tMyInheritedObject. = class(TMybaseObject)
public
  constructor Create(s: string); override;
  constructor Destroy; override;
..
end;
..
..

constructor TMybaseObject.Create(s: string);
begin
  inherited Create;
  sometext := s;
.. blah
end;

destructor TMybaseObject.Destroy;
begin
..blah
  inherited Destroy;
end;
..
constructor tMyInheritedObject.Create(s: string);
begin
  inherited Create(s);
.. blah
end;

constructor tMyInheritedObject.Destroy;
begin
..blah
  inherited Destroy;
end;

let me know if i'm on the wrong track here, it's just that not handling these correctly certainly causes weird Access violations in code that can be hard to spot.

 

by: nacker2000Posted on 2007-11-02 at 02:37:46ID: 20199090

Hi TheRealLoki thanks for the reply.

Before I get started on checking my classes and making changes I have a few questions....

I am actually creating a number of threads and custom classes, my threads are only overriding the Execute procedure so would I need to inherit the Destroy aswell to ensure a clean freeing up of the thread?

I have noticed that the threads don't inherit the Execute procedure in my Execute procedure,

e.g. inherited Execute;

Should I include this? I created my threads using the New option in Delphi and created a thread from there, it doesn't add this line by default.

My classes are declared as:

type
  MyClass = class
  .......
  end

I am not declaring them as a type e.g. class(TObject), should I declare them as a type and then override the destroy and create? At the moment I am just creating them and freeing them like:

ClassName := TClassName.Create;

...and then to free

ClassName.Free;

Because I am declaring no type for the class and I am not overriding any Destroy procedure are my classes at the moment even getting destroyed??? could this be the cause of my problems?

Let me your thoughs on this and then I will get started on making any nessessary changes.

Thanks.

 

by: diniludPosted on 2007-11-02 at 06:01:57ID: 20200398

Can you explain more and show some code

 

by: TheRealLokiPosted on 2007-11-02 at 19:58:48ID: 20205765

the base thread execute code does nothing really,
so you do not need to call inherited, since there is nothing in the base method that you want.
You do, of course, need to declare it as
procedure execute; override;
though.
when the execute procedure ends, so does the thread

creating a class as "class" implies TObject even if you do not specify it
if you are not overriding the destroy method (and calling inherited) there is is a good chance this is your problem.
hth, Loki

 

by: nacker2000Posted on 2007-11-03 at 06:38:31ID: 20206774

@TheRealLoki

Thanks for the reply and info regarding threads and classes.

Having looked at my threads I can say they already include override on the execute procedure, I guess Delphi adds this by default.

As for my classes, I have added the Destroy procedure (destructor) and included override to see if it solves the problems I am having. The real test will be when I put my program through its paces again.

I will see how it goes and let you know if my classes were the source of the problems.

@dinilud

Posting more code would be tricky, I simply don't know where the problem is coming from and because the program is nearly finished and quite large in size it would be hard to find what I thought was the problem and post the code for it. From what TheRealLoki has said so far there is a good change it is my classes not releasing properly. Thanks for taking the time look at the problem though :)

I'll report back soon in a few days after some thorough testing hopefully with some good news.

Thanks

 

by: nacker2000Posted on 2007-11-08 at 04:32:01ID: 20240572

@TheRealLoki

I don't seem to be getting the error as often now however it has cropped up a few times which makes me think it is something else causing the problem.

I have overwritten the UpdateActions procedure so I can catch it and handle it so I will try and work something out that way, I may be able to find the source control causing the problem that way.

I am working on another part of the program at the moment so I will have to return to this later.

Thanks for your input on classes and threads.

 

by: Computer101Posted on 2008-03-26 at 14:50:35ID: 21216685

Forced accept.

Computer101
EE Admin

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...