Detonator driver updated and problem

I have updated my display driver to the latest Detonator 28.32 under win98, for my GF2MX400. And I always get an error when I try to debug Lightwave plugin programs. The error message is in Japanese(as my win98), which means some handle error in NVOPENGL.DLL at 0xC000001D, Illegal Instruction. I try to “downdate” my driver to 23.10, and it works with LW, but some error between it and the nView Desktop Manager installed by 28.32. I wonder who can help me solute the problem. I need to make some plugins for our project. I’ve found the latest 23.11 and 28.32 will cause the LW debug problem, but not the older driver. Can anyone help me? Thanks

Ever since I went back to win98 on my home machine, its been nothing but trouble.

I dont now what 0xc000001d means exactly, but it probably means an op code that wasnt supported by your CPU was executed. Im talking about 3dNow! and SSE.

Go into Display->nvidia panel and go to tab (OpenGL) and disable enhanced CPU instrucution support.

My chip is a P3, yet it sometimes says illegal instruction, bla bla bla, and it all points to soemthing like mulps, an SSE instruction.

Leave win98 as soon as possible!

V-man

Yuck, you get an illegal instruction even though the OS has SSE context switch support?

  • Matt

Matt: Yep, this does seem to happen. Scary isn’t it? Or let’s put it like this, certain SSE instructions will work fine (so a check for SSE support will pass), but other instructions might just randomly fail.

The problem also seems to be WORSE when running an app in the debugger, when running outside of the debugger it often does work.

At some point I was convinced this had something to do with missing femms instructions in the code, but I’m not so sure anymore, I never could get a handle on the problem very well, especially as Win2K worked just fine.

emms/femms is NOT required for SSE. (Thank goodness! MMX is such a pain.)

  • Matt

Besides, FEMMS is only available with 3DNow. No 3DNow, no FEMMS.

Originally posted by mcraighead:
[b]Yuck, you get an illegal instruction even though the OS has SSE context switch support?

  • Matt[/b]

Not always, just sometimes.

Could this have something to do with alignment in memory. The Intel tutorial talked about it, but it didnt say how to make sure memory is aligned (or unaligned).

But that only concerns memory to register operations.

V-man

Matt: Sure, but often you will use MMX in combination with SSE, atleast I do, the two sortof go hand in hand. Now I do remember atleast one occasion where I forget the EMMS, and it went by unnoticed. Fixing this seemed to affect the illegal instruction problem.

I say again, seemed, as I’ve seen it again later, and it always was a very random problem anyway.

Let’s just pray for 9x to die quickly.

Nah, unaligned memory accesses require the special use of movups anyhow, so it’s pretty hard to screw things up.

This sounds like an OS or HW issue that I never encountered. I now use exclusively Win2K, but I used P3 w/ Win98 extensively and never once had it blow up on me like that.

Could this be a hardware fault?

  • Matt

I ran into the problem twice while doing final testing and debugging on win9x machines, both on different machines. Once a celeron, once a P3. Note that it has never been a problem to me when running the game regularly, always just when (remote) debugging.

I find it more likely to be a windows problem, maybe it’s related to certain revisions? Perhaps the type of IE installed God knows (And isn’t it much more fun to blame MS as it is to blame Intel?

Btw, how could it be a hardware fault if 2K doesn’t have the same problem?

Both your OS and your debugger needs SSE support to do a good job of handling SSE. Early version of MSDEV don’t have the required support, and thus may screw up.

Also, to see whether a pointer is appropriately aligned for SSE instructions, just look at the last nybble of the pointer (in hex display). It has to be 0. If you can’t use memalign() or aligned_alloc(), you have to wrap malloc() to allocate a larger chunk of memory and round up to the alignment you need.

It happened again, and again its pointing to a mulps instruction. I could post the asm code but it serves no purpose.

It always happens while I run in debug mode, so that could be it.

I have installed the processor pack for VC++6.

What happens, the OS forgets that it supports SSE instruction??? Its the OS that traps exceptions right?

V-man

Completeley unrelated, but a point of interest whilst on the subject of debug environment … If I run Photoshop 6 whilst in debug, I cannot launch another app until I reboot. W2K reports that it’s unable to execute the command! Only in debug though. Strange.

Not that strange, I have seen lots of aps that try and stop Softice, and or other debuggers.