some console fixes (for ctrl-c handling)
Eric Pouech
pouech-eric at wanadoo.fr
Wed Oct 6 14:19:30 CDT 2004
Ferenc Wagner a écrit :
> Eric Pouech <pouech-eric at wanadoo.fr> writes:
>
>
>>ChangeLog:
>> - ctrl-c enabling flag is now inherited
>> - fixed console-related fields in RTL_USER_PROCESS_PARAMETERS
>> - various clean-up in kernel32.SetConsoleCtrlHandler
>> - only send a console event once to a process and not to all the process' threads
>>[...]
>>+ ok(GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0), "Couldn't send ctrl-c event\n");
>>+ todo_wine ok(mch_count == 1, "Event isn't synchronous\n");
>>+ ok(WaitForSingleObject(mch_event, 3000) == WAIT_OBJECT_0, "event sending didn't work\n");
>>+ CloseHandle(mch_event);
>>+ ok(SetConsoleCtrlHandler(NULL, TRUE), "Couldn't turn off ctrl-c handling\n");
>>+ mch_event = CreateEventA(NULL, TRUE, FALSE, NULL);
>>+ mch_count = 0;
>>+ ok(GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0), "Couldn't send ctrl-c event\n");
>
>
> Hi Eric,
>
> these Ctrl-C events kill off winetest under XP. You
> probably did your tests and found this OK, so I'm not sure
> what to do. Can you offer a solution? I commented those
> two lines out, which made it go through...
Yes I tested them on XP, and they were fine. But I did the test with
make test, not winetest, which may differ in their testing environments,
console wise I mean.
What could likely happen is:
- winetest and the tested program share the same console
- we set a console event handler in the test program (but not in winetest)
- we send a ctrl-c event to the console, which is propagated to all
event handlers of each process
- the one in the test program does it's job
- we didn't install one in winetest, so the event is passed to the
default handler, which default behavior is to kill itself (winetest)
possible solutions are:
- install a controle event handler in winetest, but you wouldn't be able
to stop it by ctrl-c which is not really what you want
- recreate a different console for this particular test in kernel/tests,
which sounds the most reasonable way to control the environment of the test
A+
More information about the wine-devel
mailing list