ion(a)svn.reactos.com wrote:
> - Don't try to get the length of a possibly empty string. This fixes many menu applications (such as WinRAR). However I'm now getting a bug due to a double-free. It seems a GDI Object is being freed twice. Can anyone check this out please?
>
>
>
With the combination of this patch + Hartmut's patch + DBG = 0 build
(and/or disabling RZ detection), Winrar runs fine again. However,
pressing OK in the dialog bug causes a crash in
RtlFreeUnicodeString->RtlpFreeMemory->ExFreePool. It seems the buffer is
invalid. So it looks like two things have to be fixed for Winrar and
other apps to work fine (Windows Commander does work now):
1) Stop the GDI Object from being freed twice. This will fix the first
bugcheck and allow Winrar to work in DBG = 1 with RZ enabled. Disabling
RZ is only a hack and shouldn't be used a solution. The stack trace
ships the double-free routine pretty well, but I'm not well versed in
win32k to fix this.
2) Find out why we are RtlFreeUnicodestring-ing what seems to be an
invalid pointer.
I think if we can fix these two issues we'll have many more apps working
again!
I've tested Winrar 3.50 b7, btw.
Best regards,
Alex Ionescu
Hi,
Here is a current update on the 0.2.7 blockers...if you can help, please DO!
BUG:
- Green icon in run dialog
REGRESSION IDENTIFIED:
Yes. By WaxDragon. Regression due to BUILD.
CAUSE:
Incorrect icon was added to resource file.
FIXED:
Yes. Fix needs to be merged into 0.2.7 branch.
-------------------
BUG:
- Common Dialog Control Broken for File/Save.
REGRESSION IDENTIFIED:
Yes. By WaxDragon. Regression due to 15669.
CAUSE:
Building shell32 as ANSI causes this problem. Building it as UNICODE
however breaks the My computer dialog. Shell32 should be built as
Unicode, and the My computer dialog should appear when double-clicked.
So this bug needs to be fixed.
----------------------
BUG:
- If you use the arrow keys in the explorer start menu to expand an
entry, you cannot use them anymore to go up and down.
No further information has been researched yet. Martin, explorer is your
baby, and I'm sure is an easy fix...it doesnt' happen with the
right-click context menu on the desktop, so maybe this is localized to
some bug in your start menu code?
---------------------
BUG:
- If you right-click on the desktop to show the context menu, then
right-click again, then left-click (or other similar combinations), your
next right-click is not registered anymore.
No further information is available, although I belive hpoussin said the
problem is above win32k. I haven't heard from tinus in a long time, but
i8042prt might be where this problem resides.
-------------------
BUG:
- Several applications have regressed due to "memory corruption" and a
bugcheck related to NtGdiRealizePallette.
More information is on the Bugzilla DB, but it's down atm. I have heard
reports that the error always happened before, but wasn't seen because
red zone pool protection was disabled. In any case, it breaks a large
number of apps.
--------------------
BUG:
- AllocConsole failure in 1st-stage setup on Dell Laptops (and maybe
others).
REGRESSION IDENTIFIED:
Yes. By BrandonTurner. A regression range has been identified and 3 key
builds are being tested to find the actual regression.
Best Regards,
Alex Ionescu
gdalsnes(a)svn.reactos.com wrote:
>my 1st
>
>
>Added files:
>branches/hardons1stbranch/
>
>Updated files:
>branches/hardons1stbranch/kapi.h
>branches/hardons1stbranch/ntuser.h
>
>Deleted files:
>branches/hardons1stbranch/debug.h
>branches/hardons1stbranch/debug1.h
>
>
>
Hi,
I thought our pre-established branching rules recommend using an actual
meaningful branch name? Not a generic user branch, but a feature branch.
Best regards,
Alex Ionescu
ion(a)svn.reactos.com wrote:
> - Message Queue Fix, resolves a number of application regressions (Total Commander works again, for example). Patch by Hartmut Birr. To be commited into 0.2.7 after more testing.
>
>
>Updated files:
>trunk/reactos/subsys/win32k/ntuser/window.c
>
>
>
Hi,
this fix wasn't for commiting, because it doesn't solve the real
problem. The destroying of the message queues is intitiated by calling
Win32kThreadCallback which calls MsqDestroyMessageQueue. After this
call, it shouldn't exist anymore a window for this thread.
- Hartmut
hbirr(a)svn.reactos.com wrote:
> Lock the handle table if we trying to get a pointer from a handle.
These changes are incorrect. Please revert them.
Actually, a handle lookup requires _no_ locks at all. If you don't
believe me, read up Windows Internals (4th Edition). The algorithms to
allocate subtables are implemented in such a way that it is impossible
to page fault on a lookup. However, it is not allowed to do a lookup in
a table unless attached to the process that owns it (except it is a
global handle table).
Best Regards,
Thomas
Hello all devs, I am running Mozilla-Embedded (same as BartPE) because I can not get the Mozilla Controll to work, usually this is alright, but since some weeks ago Moz-Embedded locks the computer after the shell says "You're embedded man..." and before the mainwindow starts.
It usually took a long time for the mainwindow to start, but it used to work, and I think it takes aproximately the same time for the mouse (and the rest of the system) to lock in r16740.
I do not get any error-messages, someone with debugging skills has to look at this.
Mozilla embedded can be found here:
http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.6a/mozilla…
Yours sincerely,
Jaix Bly
Hi,
it seems there exist a problem with the message queues. If a process is
terminated (killed) from outside, the thread message queue is deleted
before the last window is deleted. If there is a message (key or mouse)
for this window, the window does access the already freed message queue.
This will crash the system. Possible it is related to the paged pool
memory corruption bug. I've a (dirty) fix for this problem.
- Hartmut
Index: subsys/win32k/ntuser/window.c
===================================================================
--- subsys/win32k/ntuser/window.c (Revision 16707)
+++ subsys/win32k/ntuser/window.c (Arbeitskopie)
@@ -1577,6 +1577,7 @@
IntSetMenu(WindowObject, hMenu, &MenuChanged);
}
WindowObject->MessageQueue = PsGetWin32Thread()->MessageQueue;
+ IntReferenceMessageQueue(WindowObject->MessageQueue);
WindowObject->Parent = (ParentWindow ? ParentWindow->Self : NULL);
if((OwnerWindow = IntGetWindowObject(OwnerWindowHandle)))
{
@@ -2180,7 +2181,7 @@
if (Window->MessageQueue->CaptureWindow == Window->Self)
Window->MessageQueue->CaptureWindow = NULL;
IntUnLockMessageQueue(Window->MessageQueue);
-
+ IntDereferenceMessageQueue(Window->MessageQueue);
/* Call hooks */
#if 0 /* FIXME */
if (HOOK_CallHooks(WH_CBT, HCBT_DESTROYWND, (WPARAM) hwnd, 0, TRUE))