ion@svn.reactos.com wrote:
Bug fixes against uninitizlied variables and support for tree-wide optimization (do not try yet, crashes in bootvid).
Updated files: trunk/reactos/config trunk/reactos/drivers/lib/ip/transport/datagram/datagram.c trunk/reactos/drivers/net/afd/afd/connect.c trunk/reactos/drivers/net/afd/afd/write.c trunk/reactos/drivers/net/tcpip/tcpip/info.c trunk/reactos/hal/halx86/generic/dma.c trunk/reactos/lib/epsapi/enum/drivers.c trunk/reactos/lib/msafd/misc/dllmain.c trunk/reactos/lib/shellext/slayer/slayer.c trunk/reactos/lib/ws2_32/misc/ns.c trunk/reactos/ntoskrnl/Makefile trunk/reactos/regtests/shared/regtests.h trunk/reactos/subsys/csrss/win32csr/guiconsole.c trunk/reactos/subsys/win32k/makefile trunk/reactos/tools/helper.mk
If some of you would like to turn OPTIMIZED = 1 and help me with some of the current problems, I'd appreciate it greatly:
1) Bootvid crashes during boot logo intialization.
Booting with NOGUIBOOT gets ros to the installation page, where
2) Default selections for radio buttons and combobox do not appear, they must now be selected manually
Apart from this glitch, driver installation and second boot were perfect, minus the following:
3) Debug message about unhandled exception, followed by an explorer crash related to a header file. 4) Browsing some registry keys in regedit causes regedit to crash.
I haven't noted any other problems for now, but I haven't done any deep testing.
On the up side, this brings my little syscall benchmark to 170ms, an additional 15% improvement. In total, this is an 80% improvement over int2e builds. Furthermore, all of ReactOS is extremly fast. Directory listing in cmd.exe is instant, explorer navigation as well. Menus re-draw instantly and the whole experience is smooth. It really feels like Windows, you have to try it to believe it.
There's been some talk on activating OPTIMIZED = 1 if (K)DBG != 1 and all the developers on IRC were in agreement. But before such a change is made, the bugs above need to be fixed, as well as any other possible things which might crop up.
Best regards, Alex Ionescu
Alex Ionescu wrote:
If some of you would like to turn OPTIMIZED = 1 and help me with some of the current problems, I'd appreciate it greatly:
- Bootvid crashes during boot logo intialization.
Booting with NOGUIBOOT gets ros to the installation page, where
- Default selections for radio buttons and combobox do not appear,
they must now be selected manually
This seems to be fixed now.
Apart from this glitch, driver installation and second boot were perfect, minus the following:
- Debug message about unhandled exception, followed by an explorer
crash related to a header file.
This is now fixed.
- Browsing some registry keys in regedit causes regedit to crash.
I am now able to get a trace:
(KERNEL32:except/except.c:159) Unhandled exception (KERNEL32:except/except.c:160) Address: (KERNEL32:except/except.c:163) 7617a022 C:\ReactOS\system32\comctl32.dll CS:EIP 1b:7617a022 DS 23 ES 23 FS 3b GS 23 EAX: 0067a408 EBX: 00000000 ECX: 0066e7d8 EDX: 000001cc EBP: 0066e808 ESI: 00000000 ESP: 0066e7cc EDI: 00000001 EFLAGS: 00000202 (KERNEL32:except/except.c:166) Frames: (KERNEL32:except/except.c:174) 761674ca C:\ReactOS\system32\comctl32.dll (KERNEL32:except/except.c:174) 7617bb55 C:\ReactOS\system32\comctl32.dll (KERNEL32:except/except.c:174) 7617f791 C:\ReactOS\system32\comctl32.dll (KERNEL32:except/except.c:174) 77e6f944 C:\ReactOS\system32\user32.dll (KERNEL32:except/except.c:174) 77e703ba C:\ReactOS\system32\user32.dll (KERNEL32:except/except.c:174) 405a99 C:\ReactOS\regedit.exe (KERNEL32:except/except.c:174) 401d31 C:\ReactOS\regedit.exe (KERNEL32:except/except.c:174) 77e6f906 C:\ReactOS\system32\user32.dll (KERNEL32:except/except.c:174) 77e70283 C:\ReactOS\system32\user32.dll (KERNEL32:except/except.c:174) 761ad1f6 C:\ReactOS\system32\comctl32.dll (KERNEL32:except/except.c:174) 761ad3cc C:\ReactOS\system32\comctl32.dll (KERNEL32:except/except.c:174) 761afd0a C:\ReactOS\system32\comctl32.dll (KERNEL32:except/except.c:174) 761b0963 C:\ReactOS\system32\comctl32.dll (KERNEL32:except/except.c:174) 761b22ac C:\ReactOS\system32\comctl32.dll (KERNEL32:except/except.c:174) 77e6f971 C:\ReactOS\system32\user32.dll (KERNEL32:except/except.c:174) 77e6fb2a C:\ReactOS\system32\user32.dll (KERNEL32:except/except.c:174) 406020 C:\ReactOS\regedit.exe (KERNEL32:except/except.c:174) 40a4fb C:\ReactOS\regedit.exe (KERNEL32:except/except.c:174) 40116a C:\ReactOS\regedit.exe (KERNEL32:except/except.c:174) 401038 C:\ReactOS\regedit.exe (KERNEL32:except/except.c:174) 7c8209d0 C:\ReactOS\system32\kernel32.dll
The bad news is that PSEH is really broken in optimized builds and RtlUnwind needs some fixing.
Best regards, Alex Ionescu
Alex Ionescu wrote:
- Browsing some registry keys in regedit causes regedit to crash.
Err, this is because GCC is extremly stupid. It loads a stack structure into ebx, and then the callback code becomes jmp(%ebx). The problem is that it restores protected registers before doing the jmp, so ebx is reset to it's value before the function is called...
I guess this needs to be made __volatile, but I'm afraid that this sort of bug might happen in other DLLs. Does anyone know if gcc team is aware of this?
Best regards, Alex Ionescu
Alex Ionescu wrote:
- Browsing some registry keys in regedit causes regedit to crash.
Err, this is because GCC is extremly stupid. It loads a stack structure into ebx, and then the callback code becomes jmp(%ebx).
Could you elaborate. I didn't quite follow in what function/context it loads ebx, and what function it jumps from/to, and where ebx wasn't what it was assumed to be.
The problem is that it restores protected registers before doing the jmp, so ebx is reset to it's value before the function is called...
I guess this needs to be made __volatile,
It's just "volatile" (no leading underscores since it's a C keyword, not a language extension).
/Mike