1. Error Return Code?

Hiya, one of the main problems with my dx game library for
Euphoria is that if there is an Euphoria related error that
happens when the eu prorgram is using the DirectDraw fullscreen
mode, the DirectDraw surface will still remain and the Euhporia
Error pop-up window can not be shown.

So, is there a way to send a message to my dll stating that there
has been a Euphoria related error? If so, then I can shut down
DirectX so the Euphoria error can be seen. I just need to know
how to do this if it's possible and will definetly save alot of
confusion.

Thanks for any help... hopefully I'm not overlooking the way to do
this if it's possible...

-------------------------------------
Todd Riggins
-------------------------------------
Exotica DX Game Library For Euphoria
-------------------------------------
Exotica Website:
http://exotica.iwarp.com/exotica.html
-------------------------------------
Exotica Forum:
http://pub19.ezboard.com/bexoticadxgamelibrary
-------------------------------------

____________________________________________________________
T O P I C A  -- Learn More. Surf Less. 
Newsletters, Tips and Discussions on Topics You Choose.
http://www.topica.com/partner/tag01

new topic     » topic index » view message » categorize

2. Re: Error Return Code?

Todd Riggins writes:
> Hiya, one of the main problems with my dx game library for
> Euphoria is that if there is an Euphoria related error that
> happens when the eu prorgram is using the DirectDraw fullscreen
> mode, the DirectDraw surface will still remain and the Euhporia
> Error pop-up window can not be shown.

I don't know of anything you can do in that case
(other than try hard to avoid having Euphoria errors).

I guess this is another vote for a global 
exception handler of some kind. 

Regards,
   Rob Craig
   Rapid Deployment Software
   http://www.RapidEuphoria.com




____________________________________________________________
T O P I C A  -- Learn More. Surf Less. 
Newsletters, Tips and Discussions on Topics You Choose.
http://www.topica.com/partner/tag01

new topic     » goto parent     » topic index » view message » categorize

3. Re: Error Return Code?

You can add my vote, too.

- Colin Taylor


Robert Craig wrote:
> 
> I guess this is another vote for a global 
> exception handler of some kind. 
> 




____________________________________________________________
T O P I C A  -- Learn More. Surf Less. 
Newsletters, Tips and Discussions on Topics You Choose.
http://www.topica.com/partner/tag01

new topic     » goto parent     » topic index » view message » categorize

4. Re: Error Return Code?

On 31 Jan 2001, at 6:11, Colin Taylor wrote:

> You can add my vote, too.
> 
> - Colin Taylor
> 
> 
> Robert Craig wrote:
> > 
> > I guess this is another vote for a global 
> > exception handler of some kind. 

Mine too, i'd prefer the program know what it is doing. Is it possible for the
error
handler to also get the execution path that led to the error, like is printed
out in ex.err?

Kat

____________________________________________________________
T O P I C A  -- Learn More. Surf Less. 
Newsletters, Tips and Discussions on Topics You Choose.
http://www.topica.com/partner/tag01

new topic     » goto parent     » topic index » view message » categorize

5. Re: Error Return Code?

Chris Bensler writes:
> Rob? Does Eu free dll's?

If the interpreter finishes normally,
the .dll's will all be freed (at the very end -
too late for Todd Riggins to clear the screen
and see the error message).

Note that if your program is stopped due to
the interpreter detecting an error, 
that's still a normal shutdown for the interpreter itself.

If the interpreter crashes with a memory access violation
or something, a lot of stuff is freed, but I'm not sure if 
everything is freed.

Regards,
   Rob Craig
   Rapid Deployment Software
   http://www.RapidEuphoria.com

new topic     » goto parent     » topic index » view message » categorize

6. Re: Error Return Code?

> Chris Bensler writes:
> > Rob? Does Eu free dll's?
>

> Robert writes:
 
> If the interpreter finishes normally,
> the .dll's will all be freed (at the very end -
> too late for Todd Riggins to clear the screen
> and see the error message).
> 

Why then does MemCheck and BoundsChecker
report Resource Leaks because DLL's aren't
being free'd under Win32Lib?

And this is being reported after normal program
termination.

euman

new topic     » goto parent     » topic index » view message » categorize

7. Re: Error Return Code?

> Chris Bensler writes:
> > Rob? Does Eu free dll's?
>

> Robert writes:
 
> If the interpreter finishes normally,
> the .dll's will all be freed (at the very end -
> too late for Todd Riggins to clear the screen
> and see the error message).
> 

Why then does MemCheck and BoundsChecker
report Resource Leaks because DLL's aren't
being free'd under Win32Lib?

And this is being reported after normal program
termination.

euman

new topic     » goto parent     » topic index » view message » categorize

8. Re: Error Return Code?

Euman writes:
> Why then does MemCheck and BoundsChecker
> report Resource Leaks because DLL's aren't
> being free'd under Win32Lib?

What does the report say exactly?
Are those tools available on the Web somewhere?

I've had no complaints of dlls not being freed.

Regards,
   Rob Craig
   Rapid Deployment Software
   http://www.RapidEuphoria.com

new topic     » goto parent     » topic index » view message » categorize

9. Re: Error Return Code?

Chris Bensler writes:
> I've had many syntax errors, where EU shuts down and reports,
> but the ms-dos window remains hidden behind the 
> DirectX window..

This is what Todd reported already.
It sounds like it might be fixed if the DirectX
dll is closed first. I agreed that a global exception handler
in Euphoria might be a solution.

Regards,
   Rob Craig
   Rapid Deployment Software
   http://www.RapidEuphoria.com

new topic     » goto parent     » topic index » view message » categorize

10. Re: Error Return Code?

> I've been noticing some resource leaks recently (just using windows'
> resource meter) using win32lib, regardless of the way Eu shuts down.  I
> guess that would explain it...

.. and GPF mysteriously *only* 20 percent of the time,  ( on shutdown ),
.. even tho *exactly* the  same events were triggered before shutdown...

new topic     » goto parent     » topic index » view message » categorize

11. Re: Error Return Code?

> Euman writes:
> > Why then does MemCheck and BoundsChecker
> > report Resource Leaks because DLL's aren't
> > being free'd under Win32Lib?
>

> Robert write:
> What does the report say exactly?
> Are those tools available on the Web somewhere?
>
> I've had no complaints of dlls not being freed.
>

What confuses me is that Euphoria has openDLL and Robert say's these DLL's
are unLoaded on program exit (I dont think so Robert) My Guess is that
Win32Lib
will have to have FreeLibrary Added after WinMain( ) to compensate.

Keep in Mind that I was told, in future versions of Win32Lib
that FreeLibrary would be put in, unless Robert want's to fix this.

Not sure about this HeapAlloc (below) though.

I left *ALOT* out of this for size sake, the original is 708k

This Report was Generated by MemCheck 5.0
A trial version of MemCheck is here:


BoundsChecker also output nearly Identicle info.
My copy came with Borland C++ Builder 5.0
A trial version can be D/L'd from: http://www.numega.com/

Euman


Overwrite detected on HeapAlloc block
  * Corruption Detected *
  Current location: HeapFree in WOTIDY7_FULL.EXE <see stack trace>
  More info: Block address: LPVOID 1C22070h
  Detailed Info: Overwrite condition detected on an allocated block
    referenced in the HeapFree <see stack trace>.
    The guard bytes of block 01C22070h, size 26, have been changed,
    resulting in data and/or heap corruption.
    The block was allocated by a HeapAlloc <see stack trace>
    in module WOTIDY7_FULL.EXE.
    To pinpoint the location of the actual corruption,
    use BugCrusher mode or the mc_check_buffers() API.
  Parameters:
    hHeap is HANDLE 1B20000h (28442624)
      Number of free blocks: 2
      Number of used blocks: 42
      Memory allocated in heap: 908 bytes
    dwFlags is DWORD 0h (0)
    lpMem is LPVOID 1C22070h (29499504)
      Heap Block is USED
      Size: 32
  Stack Trace:
    kernel32.DLL! HeapFree
    WOTIDY7_FULL.EXE! ___CPPdebugHook + 4EAEh
    WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 69D80h
    WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 6AFF3h
    WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 62890h
    WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 62A48h
    WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 1D3E5h
  Thread ID: FFF167C7h  Prio: THREAD_PRIORITY_NORMAL (0)
  More information about this resource:
    Value: LPVOID 1C22070h    (internal type: PHEAP_BLOCK_WIN)
    Size:  1Ah (26) bytes
    Block lies in a Windows heap.
    Heap block status: USED  Allocation #512
    Allocated with HeapAlloc

    * Free with HeapFree *

    Heap Block is USED
    Size: 32
    Created by HeapAlloc in WOTIDY7_FULL.EXE <see stack trace>
    Stack Trace:
      kernel32.DLL! HeapAlloc
      WOTIDY7_FULL.EXE! ___CPPdebugHook + 4EAEh
      WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 6A021h
      WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 6A9FAh
      WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 62441h
      WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 62A48h
      WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 1D3E5h
    Heap Block is USED
    Size: 32

Library loaded: user32.dll
  * Runtime Info *
  Current location: LoadLibraryA in WOTIDY7_FULL.EXE <see stack trace>
  More info: Module handle: BFF50000h
  Detailed Info: No more info available.
  Stack Trace:
    kernel32.DLL! LoadLibraryA
    WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 79DCAh
    WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 7A61Ah
    WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 649B3h
    WOTIDY7_FULL.EXE! __GetExceptDLLinfo + E5Ah
    WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 8815Ah
    No owning module for EIP 0h, trace ended.
  Thread ID: FFF167C7h  Prio: THREAD_PRIORITY_NORMAL (0)

Library loaded: kernel32.dll
<SNIP> save space..........ALMOST SAME INFO as above.

Library loaded: user32.dll
<SNIP>

Library loaded: riched20.dll
<SNIP>

Library loaded: comctl32.dll
<SNIP>

Library loaded: gdi32.dll
<SNIP>


** AND After Normal Program Termination



No FreeLibrary for LoadLibraryA
  * Resource Leak *
  More info: Library Name: riched20.dll
  Detailed Info: The resource named 'riched20.dll' was not freed.
    HMODULE value 48000000h (1207959552) was allocated by LoadLibraryA
    <see stack trace> in WOTIDY7_FULL.EXE.
    Use FreeLibrary to release it when you're done.
  Thread ID: FFF167C7h  Prio: THREAD_PRIORITY_NORMAL (0)
  More information about this resource:
    Resource name: riched20.dll
    Value: HMODULE 48000000h
    Allocation #6
    Allocated with LoadLibraryA
    Free with FreeLibrary
    Module name: "C:\WINDOWS\SYSTEM\RICHED20.DLL"
    Created by LoadLibraryA in WOTIDY7_FULL.EXE <see stack trace>
    Stack Trace:
      kernel32.DLL! LoadLibraryA
      WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 79DCAh
      WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 7A61Ah
      WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 649B3h
      WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 21D86h
      WOTIDY7_FULL.EXE! __GetExceptDLLinfo + B2B4h
      WOTIDY7_FULL.EXE! __GetExceptDLLinfo + 8815Ah
      No owning module for EIP 0h, trace ended.
    Module name: "C:\WINDOWS\SYSTEM\RICHED20.DLL"

No FreeLibrary for LoadLibraryA
  * Resource Leak *
  More info: Library Name: shell32.dll

 <SNIP> save space..........ALMOST SAME INFO as above.

No FreeLibrary for LoadLibraryA
  * Resource Leak *
  More info: Library Name: comctl32.dll
  Detailed Info: The resource named 'comctl32.dll' was not freed.

  <SNIP>

No FreeLibrary for LoadLibraryA
  * Resource Leak *
  More info: Library Name: gdi32.dll
  Detailed Info: The resource named 'gdi32.dll' was not freed.

  <SNIP>

No FreeLibrary for LoadLibraryA
  * Resource Leak *
  More info: Library Name: user32.dll
  Detailed Info: The resource named 'user32.dll' was not freed.

  <SNIP>

No FreeLibrary for LoadLibraryA
  * Resource Leak *
  More info: Library Name: kernel32.dll
  Detailed Info: The resource named 'kernel32.dll' was not freed.

  <SNIP>


  Number of API failures: 154
  Number of Extent errors: 0
  Number of GDI errors: 0
  Number of general errors: 0
  Number of guard byte overwrite errors: 1
  Number of invalid parameter errors: 366      ** Not include because of
size
  Number of Windows resource leaks: 22      ** All not included because of
size  'Euman'
  Number of memory leaks: 0                        ** 0 Because of
Euphoria's Runtime
                                                                    ** No
way I can check this.
  Number of transfer destination overwrite errors: 0

new topic     » goto parent     » topic index » view message » categorize

12. Re: Error Return Code?

Euman writes:
> Overwrite detected on HeapAlloc block

You should copy euphoria\include\safe.e to
your application's directory and rename safe.e
as machine.e in that directory. Then run your program.

safe.e does the same kind of checks as MemCheck, but
any errors will relate directly to your Euphoria source program.

By the way, I downloaded MemCheck, and it reported
dll's not unloaded, but that's fixed now. It reported
some other errors too, but they are not really errors.

Regards,
   Rob Craig
   Rapid Deployment Software
   http://www.RapidEuphoria.com

new topic     » goto parent     » topic index » view message » categorize

13. Re: Error Return Code?

Matt Lewis writes:
> If you do this in windows, you'll have problems, 
> unless you add some calls to register_block whenever 
> Eu uses memory handed to it by windows (esp
> structures passed through WM_NOTIFY messages).

Right. Thanks for reminding me.

machine.e defines register_block() and unregister_block() as
no-ops, so it would be possible to put these calls into Win32Lib
and run with either safe.e or machine.e. Of course, if there are
a million places where it has to be done it wouldn't be worth it.

Regards,
   Rob Craig
   Rapid Deployment Software
   http://www.RapidEuphoria.com

new topic     » goto parent     » topic index » view message » categorize

14. Re: Error Return Code?

> Euman writes:
> > Overwrite detected on HeapAlloc block
>
> You should copy euphoria\include\safe.e to
> your application's directory and rename safe.e
> as machine.e in that directory. Then run your program.


> If you do this in windows, you'll have problems, unless you add some calls
>to register_block whenever Eu uses memory handed to it by windows (esp
>structures passed through WM_NOTIFY messages).

>Matt Lewis

I seem to remember this comeing up oh, a half dozen times.

> By the way, I downloaded MemCheck, and it reported
> .dll's not unloaded, but that's fixed now. It reported
> some other errors too, but they are not really errors.
>

I hope the program U chose to evaluate was fairly large and complex.
I got so many different errors I cant count them all.

The program RUNS FINE and does what it's supposed to, however,
I'm leaning towards Win32Lib being the culprit for most of them.
Still, I personally like the idea of haveing the very minimum errors
as possible to ensure user's of my programs have the safest possible
binaries.

I only wish I knew more about the Win API.


> Regards,
>    Rob Craig
>    Rapid Deployment Software
>    http://www.RapidEuphoria.com
>
>
>

new topic     » goto parent     » topic index » view message » categorize

15. Re: Error Return Code?

G'day all

>On 31 Jan 2001, at 6:11, Colin Taylor wrote:
>
>  You can add my vote, too.
>
>- Colin Taylor
>
>>
>>Robert Craig wrote:
>>  
>>I guess this is another vote for a global 
>>exception handler of some kind.  
 

I'll vote for this too. 

Regards
Tony

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu