Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

#117 Crawler Crases with external graphics client

7.0 beta
closed-fixed
Tschachim
(Common) (17)
9
2011-12-07
2011-08-16
Anonymous
No

In any scenario where the Crawler is present Orbiter (here Orbiter_ng.exe) crashes.

Analysis/Reason:
The external graphic client seems to call the different callbacks in a slightly diffrent order than the inline client.
In Crawler::clbkPostStep() an acces to the not (yet) initialized member 'hLV' causes a crash.

Setup:
I tested it with the RC30 of the D3D9Client. Maybe other versions behave different again, but the 'solution' should be fail-save in any case

Solution:
"Guard" the access by if-clause. The method ( Crawler::clbkPostStep) will be called later on.
See attached patch file for a working solution

Discussion

  • Patch Proposal for Crawler-Code (Revision 1.4 based)

     
    Attachments
  • By the way, I didn't want to create an (another) account here, so this 'issue' was created as "nobody".
    For questions about the patch or my setup, one can find me as 'kuddel' at the Orbiter Forum ;)
    http://www.orbiter-forum.com/member.php?u=451

     
  • Tschachim
    Tschachim
    2011-08-19

    • priority: 5 --> 9
    • assigned_to: nobody --> tschachim
     
  • Tschachim
    Tschachim
    2011-08-19

    Hi Kuddel,

    thanks for reporting and the patch. I'll look into that and incorporate your patch the next week (hopefully :-) ).

    However, if clbkPostStep is called before clbkPreStep, this is a quite serious bug either in the graphics client or orbiter_ng, so one need to talk with Jarmo about that or file an Orbiter bug report...

    Cheers
    Tschachim

     
  • Hi Tschachim,
    it's me Kuddel,

    you're right. The clbkPostStep should *never* be called before clbkPreStep in the first place!
    I did not track down the root-cause that far 'cause my 'quick-fix' did work immediately ;)
    My fix should therefore _not_ be the solution - it hides the real root cause, which is bad!
    When I find the time I will present this issue to Jarmo.
    I can not guarantee to find much time in the next couple of days, so if you are faster than me go ahead :-D
    Cheers,
    Kuddel

     
  • Hi Tschachim,
    I've tested with several versions of the D3D9Client and the problem was definitely at the RC30.
    More current versions (RC32 and RC33) do not have the problem, with them Orbiter_ng always call 'clbkPreStep' first and 'clbkPostStep' later on.
    So this "bug" can be closed (Resolution: use the right client! ;) )
    Sorry for any inconvenience caused,
    Kuddel

     
  • Tschachim
    Tschachim
    2011-12-07

    Patch committed

     
  • Tschachim
    Tschachim
    2011-12-07

    • status: open --> closed-fixed