From: Mark R. <ma...@gm...> - 2008-04-28 14:19:11
|
I've tried getting coLinux running (tried latest release, stable, and dev. snapshot) on my Vista laptop, but it consistently freezes all input devices (keyboard and mouse don't work). Even after I'm unable to move my mouse or type on my keyboard, I can see the console messages (both on NT and FLTK) continue until it reaches the login. At this point, I'm unable to type 'root' or navigate my mouse for any other operation. It appears the machine is still alive since I'm able to use my "non standard" function keys to do things like turn on the keyboard light or access Lenovo's "ThinkVantage" menu options. Thinking this might be related to the console specifically, I even tried running as a service, but it behaves the same way. Seems like starting coLinux on Vista hijacks my input devices. The same configuration works fine under XP. Any ideas, tips, suggestions? Thanks. -- Mark F Rodriguez |
From: Henry N. <Henry.Ne@Arcor.de> - 2008-05-06 19:10:23
|
Hello Mark, Mark Rodriguez wrote: > I've tried getting coLinux running (tried latest release, stable, and > dev. snapshot) on my Vista laptop, but it consistently freezes all > input devices (keyboard and mouse don't work). Even after I'm unable > to move my mouse or type on my keyboard, I can see the console > messages (both on NT and FLTK) continue until it reaches the login. At > this point, I'm unable to type 'root' or navigate my mouse for any > other operation. It appears the machine is still alive since I'm able > to use my "non standard" function keys to do things like turn on the > keyboard light or access Lenovo's "ThinkVantage" menu options. > > Thinking this might be related to the console specifically, I even > tried running as a service, but it behaves the same way. Seems like > starting coLinux on Vista hijacks my input devices. The same > configuration works fine under XP. Any ideas, tips, suggestions? I feel, you have the same promblem as Andreas. Please try some of my debugging tips from help forum: http://sourceforge.net/forum/message.php?msg_id=4948804 At other coLinux users with running Vista: Exist any difference between your Vista versions? Build number, Professional/Home, Service Packs or what ever? Please ansewer here in the list, not in the forum. -- Henry N. |
From: Paolo M. <pao...@gm...> - 2008-05-08 06:59:59
|
On Tue, May 6, 2008 at 9:10 PM, Henry Nestler <Hen...@ar...> wrote: > Hello Mark, > > Mark Rodriguez wrote: >> I've tried getting coLinux running (tried latest release, stable, and >> dev. snapshot) on my Vista laptop, but it consistently freezes all >> input devices (keyboard and mouse don't work). Even after I'm unable >> to move my mouse or type on my keyboard, I can see the console >> messages (both on NT and FLTK) continue until it reaches the login. At >> this point, I'm unable to type 'root' or navigate my mouse for any >> other operation. It appears the machine is still alive since I'm able >> to use my "non standard" function keys to do things like turn on the >> keyboard light or access Lenovo's "ThinkVantage" menu options. >> >> Thinking this might be related to the console specifically, I even >> tried running as a service, but it behaves the same way. Seems like >> starting coLinux on Vista hijacks my input devices. The same >> configuration works fine under XP. Any ideas, tips, suggestions? > > I feel, you have the same promblem as Andreas. > Please try some of my debugging tips from help forum: > http://sourceforge.net/forum/message.php?msg_id=4948804 > > At other coLinux users with running Vista: Exist any difference between > your Vista versions? Build number, Professional/Home, Service Packs or > what ever? > > Please ansewer here in the list, not in the forum. > > -- > Henry N. > Hello, on my PC with Vista there is a small problem about CTRL-C I run colinux-0.7.2 (with you fix, Henry :=) ) and console-nt. Then I run the following command : > hexdump /dev/cobd1 where cobd1 is connected to my physical CDROM. There are a lot of data. If I want to stop, I press CTRL-C. Under XP all is OK, the console-nt pass the CTRL-C to linux and hexdump stops almost immediately. Under Vista CTRL-C doesn't stops the hexdump command. To be more clear, in Vista CTRL-C is not always bad. For example, if I compile a program with this command : > gcc myexample.c and I press CTRL-C during compilation, CTRL-C works OK and stops the compiler. It seems that it depends on the amount of data that pass throught the console-nt or someting similar. For Mark: I dont't have your problem of freezing input device .... It seems that on Vista everyone has a different problem :=( Henry, your fix is OK .... no more hangs after IPI Shortcut mode :=) Bye, Paolo |
From: Paolo M. <pao...@gm...> - 2008-05-10 09:11:56
|
Hi, yesterday I have tried a little to understand the problem of no-input of Vista. I have only tried CONSOLE-NT and what I write below is about console-nt. I have written a small program int pid; int main() { pid=fork(); if (pid==0) { while (1) printf("X"); } else { char c[1024]; read(1,c,1); kill(pid,9); } } Under XP is Ok. If I press ENTER the father kill the child. Under Vista it does not work because the daemon (I think ...) doesn't get the input. Under Vista it doesn't get neither CTRL-C nor any input. It is a general input problem. If I insert a usleep in this way : while(1) { printf("X"); usleep(100); } then under Vista all is OK. An oher way to make OK under Vista is removing usleep(....) and add fflush(stdout); If there is a very important output on the console-nt Vista doesn't get any input ! I have tried to understand the code, but I don't understand well the code. I have seen the widget->loop() that check if there is some input event. But I don't understand where is managed the console output. I think with the reactor callback or something else. Bye, Paolo Henry, thank you for moderation of the list ! On Thu, May 8, 2008 at 8:59 AM, Paolo Minazzi <pao...@gm...> wrote: > > On Tue, May 6, 2008 at 9:10 PM, Henry Nestler <Hen...@ar...> wrote: > > Hello Mark, > > > > Mark Rodriguez wrote: > >> I've tried getting coLinux running (tried latest release, stable, and > >> dev. snapshot) on my Vista laptop, but it consistently freezes all > >> input devices (keyboard and mouse don't work). Even after I'm unable > >> to move my mouse or type on my keyboard, I can see the console > >> messages (both on NT and FLTK) continue until it reaches the login. At > >> this point, I'm unable to type 'root' or navigate my mouse for any > >> other operation. It appears the machine is still alive since I'm able > >> to use my "non standard" function keys to do things like turn on the > >> keyboard light or access Lenovo's "ThinkVantage" menu options. > >> > >> Thinking this might be related to the console specifically, I even > >> tried running as a service, but it behaves the same way. Seems like > >> starting coLinux on Vista hijacks my input devices. The same > >> configuration works fine under XP. Any ideas, tips, suggestions? > > > > I feel, you have the same promblem as Andreas. > > Please try some of my debugging tips from help forum: > > http://sourceforge.net/forum/message.php?msg_id=4948804 > > > > At other coLinux users with running Vista: Exist any difference between > > your Vista versions? Build number, Professional/Home, Service Packs or > > what ever? > > > > Please ansewer here in the list, not in the forum. > > > > -- > > Henry N. > > > > Hello, > on my PC with Vista there is a small problem about CTRL-C > I run colinux-0.7.2 (with you fix, Henry :=) ) and console-nt. > Then I run the following command : > > > hexdump /dev/cobd1 > > where cobd1 is connected to my physical CDROM. > There are a lot of data. > If I want to stop, I press CTRL-C. > Under XP all is OK, the console-nt pass the CTRL-C to linux and > hexdump stops almost immediately. > > Under Vista CTRL-C doesn't stops the hexdump command. > To be more clear, in Vista CTRL-C is not always bad. > For example, if I compile a program with this command : > > > gcc myexample.c > > and I press CTRL-C during compilation, CTRL-C works OK and stops the compiler. > It seems that it depends on the amount of data that pass throught the > console-nt or someting similar. > > For Mark: > I dont't have your problem of freezing input device .... > It seems that on Vista everyone has a different problem :=( > > Henry, your fix is OK .... no more hangs after IPI Shortcut mode :=) > > Bye, > Paolo > |
From: Henry N. <Henry.Ne@Arcor.de> - 2008-05-10 14:11:30
|
Paolo Minazzi schrieb: > Hi, > yesterday I have tried a little to understand the problem of no-input of Vista. > I have only tried CONSOLE-NT and what I write below is about console-nt. > I have written a small program > > int pid; > > int main() > { > pid=fork(); > if (pid==0) > { > while (1) printf("X"); > } > else > { > char c[1024]; > read(1,c,1); > kill(pid,9); > } > } Thanks for the code example. Seen from your other mail, this is: read(STDIN_FILENO,c,1); > > Under XP is Ok. > If I press ENTER the father kill the child. > > Under Vista it does not work because the daemon (I think ...) doesn't > get the input. > Under Vista it doesn't get neither CTRL-C nor any input. It is a > general input problem. > If I insert a usleep in this way : > > while(1) > { > printf("X"); > usleep(100); > } > > then under Vista all is OK. > An oher way to make OK under Vista is removing usleep(....) and add > fflush(stdout); > > If there is a very important output on the console-nt Vista doesn't > get any input ! > > I have tried to understand the code, but I don't understand well the code. > I have seen the widget->loop() that check if there is some input event. > But I don't understand where is managed the console output. I think > with the reactor callback or something else. Console input is handled by "console_widget_NT_t::loop()". The keyboard will be read with "ReadConsoleInput(input, &i, 1, &r)". src/colinux/os/winnt/user/console-nt/widget.cpp:437 http://colinux.svn.sourceforge.net/viewvc/colinux/branches/devel/src/colinux/os/winnt/user/console-nt/widget.cpp?view=markup The output is handled by "console_window_t::event". and forwarded to "co_rc_t console_widget_t::event(co_console_message_t *message)" src/colinux/user/console-base/widget.cpp:40 http://colinux.svn.sourceforge.net/viewvc/colinux/branches/devel/src/colinux/user/console-base/widget.cpp?revision=710&view=markup Ok, lets see how the reactor works on an endless output. In normal case the reactor select leave 1ms after no output to handle inputs. co_reactor_select will also leave after every output, so the "console_window_t::loop" will be enter again every very fast and should check the input from keyboard. The question is: What gets "GetNumberOfConsoleInputEvents" in "console_widget_NT_t::loop()", on very fast output and you pressed the enter key? I have no Vista. Paolo, can you change the code and check with colinux-debug-daemon? For example with some "Trace" debugs in the code of src/colinux/os/winnt/user/console-nt/widget.cpp: co_rc_t console_widget_NT_t::loop() { DWORD r; if (!GetNumberOfConsoleInputEvents(input, &r)) { co_debug("GetNumberOfConsoleInputEvents failed with %d", GetLastError()); // Trace return CO_RC(ERROR); } if (r == 0) { co_debug("GetNumberOfConsoleInputEvents nothing"); // Trace return CO_RC(OK); } INPUT_RECORD i; ReadConsoleInput(input, &i, 1, &r); if (ctrl_exit) { window->detach(); return CO_RC(OK); } switch ( i.EventType ) { case KEY_EVENT: co_debug("ReadConsoleInput KEY_EVENT: process_key_event"); // Trace process_key_event(i.Event.KeyEvent); break; case FOCUS_EVENT: /* MSDN says this events should be ignored ??? */ process_focus_event(i.Event.FocusEvent); break; case MOUSE_EVENT: /* *TODO: must be enabled first also */ break; default: co_debug("GetNumberOfConsoleInputEvents unhandled event %d", i.EventType); // Trace } return CO_RC(OK); } -- Henry N. |
From: Paolo M. <pao...@gm...> - 2008-05-10 16:09:46
|
Ok, done. I try and then I post the result. Bye, Paolo On Sat, May 10, 2008 at 4:12 PM, Henry Nestler <Hen...@ar...> wrote: > > > Paolo Minazzi schrieb: > > > Hi, > > yesterday I have tried a little to understand the problem of no-input of Vista. > > I have only tried CONSOLE-NT and what I write below is about console-nt. > > I have written a small program > > > > int pid; > > > > int main() > > { > > pid=fork(); > > if (pid==0) > > { > > while (1) printf("X"); > > } > > else > > { > > char c[1024]; > > read(1,c,1); > > kill(pid,9); > > } > > } > > Thanks for the code example. > Seen from your other mail, this is: read(STDIN_FILENO,c,1); > > > > > > Under XP is Ok. > > If I press ENTER the father kill the child. > > > > Under Vista it does not work because the daemon (I think ...) doesn't > > get the input. > > Under Vista it doesn't get neither CTRL-C nor any input. It is a > > general input problem. > > If I insert a usleep in this way : > > > > while(1) > > { > > printf("X"); > > usleep(100); > > } > > > > then under Vista all is OK. > > An oher way to make OK under Vista is removing usleep(....) and add > > fflush(stdout); > > > > If there is a very important output on the console-nt Vista doesn't > > get any input ! > > > > I have tried to understand the code, but I don't understand well the code. > > I have seen the widget->loop() that check if there is some input event. > > But I don't understand where is managed the console output. I think > > with the reactor callback or something else. > > Console input is handled by "console_widget_NT_t::loop()". > The keyboard will be read with "ReadConsoleInput(input, &i, 1, &r)". > src/colinux/os/winnt/user/console-nt/widget.cpp:437 > http://colinux.svn.sourceforge.net/viewvc/colinux/branches/devel/src/colinux/os/winnt/user/console-nt/widget.cpp?view=markup > > The output is handled by "console_window_t::event". and forwarded to > "co_rc_t console_widget_t::event(co_console_message_t *message)" > src/colinux/user/console-base/widget.cpp:40 > http://colinux.svn.sourceforge.net/viewvc/colinux/branches/devel/src/colinux/user/console-base/widget.cpp?revision=710&view=markup > > Ok, lets see how the reactor works on an endless output. > In normal case the reactor select leave 1ms after no output to handle > inputs. co_reactor_select will also leave after every output, so the > "console_window_t::loop" will be enter again every very fast and should > check the input from keyboard. > > The question is: What gets "GetNumberOfConsoleInputEvents" in > "console_widget_NT_t::loop()", on very fast output and you pressed the > enter key? > > I have no Vista. Paolo, can you change the code and check with > colinux-debug-daemon? For example with some "Trace" debugs in the code > of src/colinux/os/winnt/user/console-nt/widget.cpp: > > co_rc_t > console_widget_NT_t::loop() > { > DWORD r; > > if (!GetNumberOfConsoleInputEvents(input, &r)) { > co_debug("GetNumberOfConsoleInputEvents failed with %d", > GetLastError()); // Trace > return CO_RC(ERROR); > } > > if (r == 0) { > co_debug("GetNumberOfConsoleInputEvents nothing"); // Trace > return CO_RC(OK); > } > > INPUT_RECORD i; > ReadConsoleInput(input, &i, 1, &r); > if (ctrl_exit) { > window->detach(); > return CO_RC(OK); > } > > switch ( i.EventType ) > { > case KEY_EVENT: > co_debug("ReadConsoleInput KEY_EVENT: process_key_event"); // Trace > process_key_event(i.Event.KeyEvent); > break; > case FOCUS_EVENT: > /* MSDN says this events should be ignored ??? */ > process_focus_event(i.Event.FocusEvent); > break; > case MOUSE_EVENT: > /* *TODO: must be enabled first also */ > break; > default: > co_debug("GetNumberOfConsoleInputEvents unhandled event %d", > i.EventType); // Trace > } > return CO_RC(OK); > } > > -- > Henry N. > |
From: Paolo M. <pao...@gm...> - 2008-05-10 21:34:48
|
Hi Henry, I added the lines you said me. I realize that during NO OUTPUT, I see continuosly the message "GetNumberOfConsoleInputEvent nothing", that is OK. When I launch my program that exec for (i=1 to 10000) printf("X"); I dont' see anything in the daemon-debug window ... I don't see "GetNumberOfConsoleInputEvent nothing". When the for cycle ends, The message "GetNumberOfConsoleInputEvent nothing" appears continuosly. So I decide to add two other co_debug. 1. console.cpp line 309 co_rc_t console_window_t::loop co_rc_t console_window_t::loop(void) { co_rc_t rc; // ******************************** co_debug("console_window_t::loop"); // ******************************** rc = widget->loop(); if (!(CO_OK(rc) && widget)) return rc; rc = co_reactor_select(reactor, 1); if (!CO_OK(rc)) return rc; return widget->idle(); } 2. main.cpp line 28 int co_user_console_main(....) int co_user_console_main(int argc, char **argv) { co_rc_t rc; co_debug_start(); rc = global_window->parse_args(argc, argv); if (!CO_OK(rc)) { co_debug("The console program was unable to parse the parameters."); goto co_user_console_main_error; } rc = global_window->start(); if (!CO_OK(rc)) { co_debug("The console program could not start."); goto co_user_console_main_error; } do { // ************************************* co_debug("calling global_window->loop"); // ************************************* rc = global_window->loop(); } while (CO_OK(rc) && global_window->is_attached()); if (global_window->is_attached()) global_window->detach(); if (CO_OK(rc)) { co_debug_end(); return 0; } co_user_console_main_error: co_debug("The console program encountered an error: %08x", (int)rc); co_debug_end(); global_window = 0; return -1; } ------------------------------------- OK, these are my modifications. When I launch my cycle for (i=1 to 10000) printf("X"); I don't see any message on the daemon-debug window. When my cycle terminates, I see continuosly the following messages **************************************************************************************************** <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1040556125" local_index="180145" facility="0" function="loop" line="313" level="10" driver_inde x="334995"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1040556535" local_index="180146" facility="0" function="loop" line="450" level="10" drive r_index="334996"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1040610932" local_index="180147" facility="0" function="co_user_console_main" line="47" level="10" driver_index="334997"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1040613112" local_index="180148" facility="0" function="loop" line="313" level="10" driver_inde x="334998"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1040613742" local_index="180149" facility="0" function="loop" line="450" level="10" drive r_index="334999"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1040667132" local_index="180150" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335000"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1040669025" local_index="180151" facility="0" function="loop" line="313" level="10" driver_inde x="335001"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1040669351" local_index="180152" facility="0" function="loop" line="450" level="10" drive r_index="335002"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1040722770" local_index="180153" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335003"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1040723715" local_index="180154" facility="0" function="loop" line="313" level="10" driver_inde x="335004"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1040724871" local_index="180155" facility="0" function="loop" line="450" level="10" drive r_index="335005"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1040778709" local_index="180156" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335006"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1040780506" local_index="180157" facility="0" function="loop" line="313" level="10" driver_inde x="335007"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1040780875" local_index="180158" facility="0" function="loop" line="450" level="10" drive r_index="335008"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1040838282" local_index="180159" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335009"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1040839856" local_index="180160" facility="0" function="loop" line="313" level="10" driver_inde x="335010"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1040840317" local_index="180161" facility="0" function="loop" line="450" level="10" drive r_index="335011"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1040891198" local_index="180162" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335012"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1040892095" local_index="180163" facility="0" function="loop" line="313" level="10" driver_inde x="335013"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1040892545" local_index="180164" facility="0" function="loop" line="450" level="10" drive r_index="335014"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1040946599" local_index="180165" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335015"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1040949545" local_index="180166" facility="0" function="loop" line="313" level="10" driver_inde x="335016"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1040949902" local_index="180167" facility="0" function="loop" line="450" level="10" drive r_index="335017"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1041002371" local_index="180168" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335018"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1041003924" local_index="180169" facility="0" function="loop" line="313" level="10" driver_inde x="335019"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1041059228" local_index="180172" facility="0" function="loop" line="313" level="10" driver_inde x="335022"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1041506131" local_index="180195" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335045"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1041509909" local_index="180196" facility="0" function="loop" line="313" level="10" driver_inde x="335046"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1041510345" local_index="180197" facility="0" function="loop" line="450" level="10" drive r_index="335047"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1041561960" local_index="180198" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335048"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1041562932" local_index="180199" facility="0" function="loop" line="313" level="10" driver_inde x="335049"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1041563247" local_index="180200" facility="0" function="loop" line="450" level="10" drive r_index="335050"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1041617982" local_index="180201" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335051"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1041620828" local_index="180202" facility="0" function="loop" line="313" level="10" driver_inde x="335052"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1041621294" local_index="180203" facility="0" function="loop" line="450" level="10" drive r_index="335053"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1041673553" local_index="180204" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335054"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1041674516" local_index="180205" facility="0" function="loop" line="313" level="10" driver_inde x="335055"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1041674942" local_index="180206" facility="0" function="loop" line="450" level="10" drive r_index="335056"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1041731066" local_index="180207" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335057"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1041732584" local_index="180208" facility="0" function="loop" line="313" level="10" driver_inde x="335058"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1041733575" local_index="180209" facility="0" function="loop" line="450" level="10" drive r_index="335059"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1041785408" local_index="180210" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335060"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1041786545" local_index="180211" facility="0" function="loop" line="313" level="10" driver_inde x="335061"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1041786932" local_index="180212" facility="0" function="loop" line="450" level="10" drive r_index="335062"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1041841531" local_index="180213" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335063"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1041843244" local_index="180214" facility="0" function="loop" line="313" level="10" driver_inde x="335064"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1041844240" local_index="180215" facility="0" function="loop" line="450" level="10" drive r_index="335065"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1041897267" local_index="180216" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335066"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1041898233" local_index="180217" facility="0" function="loop" line="313" level="10" driver_inde x="335067"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1041898604" local_index="180218" facility="0" function="loop" line="450" level="10" drive r_index="335068"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1041953270" local_index="180219" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335069"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1041956635" local_index="180220" facility="0" function="loop" line="313" level="10" driver_inde x="335070"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1042010244" local_index="180223" facility="0" function="loop" line="313" level="10" driver_inde x="335073"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1042513298" local_index="180249" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335099"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1042514846" local_index="180250" facility="0" function="loop" line="313" level="10" driver_inde x="335100"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1042515353" local_index="180251" facility="0" function="loop" line="450" level="10" drive r_index="335101"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1042569202" local_index="180252" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335102"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1042571350" local_index="180253" facility="0" function="loop" line="313" level="10" driver_inde x="335103"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1042572542" local_index="180254" facility="0" function="loop" line="450" level="10" drive r_index="335104"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1042625919" local_index="180255" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335105"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1042627692" local_index="180256" facility="0" function="loop" line="313" level="10" driver_inde x="335106"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1042628132" local_index="180257" facility="0" function="loop" line="450" level="10" drive r_index="335107"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1042680662" local_index="180258" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335108"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1042681899" local_index="180259" facility="0" function="loop" line="313" level="10" driver_inde x="335109"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1042683807" local_index="180260" facility="0" function="loop" line="450" level="10" drive r_index="335110"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1042737550" local_index="180261" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335111"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1042738468" local_index="180262" facility="0" function="loop" line="313" level="10" driver_inde x="335112"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1042738887" local_index="180263" facility="0" function="loop" line="450" level="10" drive r_index="335113"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1042792193" local_index="180264" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335114"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1042802399" local_index="180265" facility="0" function="loop" line="313" level="10" driver_inde x="335115"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1042804229" local_index="180266" facility="0" function="loop" line="450" level="10" drive r_index="335116"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1042848034" local_index="180267" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335117"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1042849249" local_index="180268" facility="0" function="loop" line="313" level="10" driver_inde x="335118"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1042849712" local_index="180269" facility="0" function="loop" line="450" level="10" drive r_index="335119"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1042904113" local_index="180270" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335120"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1042907331" local_index="180271" facility="0" function="loop" line="313" level="10" driver_inde x="335121"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt" file="src/colinux/os/winnt/user/console-nt/widget.cpp" timestamp ="00000003.1042907671" local_index="180272" facility="0" function="loop" line="450" level="10" drive r_index="335122"> <string>GetNumberOfConsoleInputEvents nothing</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/main.cpp" timestamp="0000000 3.1042959997" local_index="180273" facility="0" function="co_user_console_main" line="47" level="10" driver_index="335123"> <string>calling global_window->loop</string> </log> <log module="colinux-console-nt" file="src/colinux/user/console-base/console.cpp" timestamp="0000 0003.1042962513" local_index="180274" facility="0" function="loop" line="313" level="10" driver_inde x="335124"> <string>console_window_t::loop</string> </log> <log module="colinux-console-nt"</dump> **************************************************************************************************** As you can see, there are 1. calling global_window->loop 2. console_window_t::loop 3. GetNumberOfConsoleInputEvents nothing CONTINE FROM point 1 The point is that during an heavy output the main cycle in the console is not called. It is not easy for me find a solution ... ideas ? To make proofs more quickly, I need to installvmware with an environment to rebuild colinux-daemon-console-nt.exe Bye, Paolo |
From: Henry N. <Henry.Ne@Arcor.de> - 2008-05-10 22:01:13
|
Paolo Minazzi wrote: > Hi Henry, > I added the lines you said me. > I realize that during NO OUTPUT, I see continuosly the message > "GetNumberOfConsoleInputEvent nothing", that is OK. > When I launch my program that exec > > for (i=1 to 10000) printf("X"); > > I dont' see anything in the daemon-debug window ... I don't see > "GetNumberOfConsoleInputEvent nothing". > When the for cycle ends, The message "GetNumberOfConsoleInputEvent > nothing" appears continuosly. Ok. I found some in src/colinux/os/winnt/user/reactor.c:60 In "packet_read_async" it's loop without return on continues data stream. An idea would be to remove the "while (TRUE)" and let it stop after every ReadFile. Than the loops in console code can poll for keyboard. The negative side effect would be, that some other daemons goes slower. But perhaps this is alos better for other bidirectional pipes? A mix between performance and as workarround we can do this: =================================================================== --- src/colinux/os/winnt/user/reactor.c (Revision 1038) +++ src/colinux/os/winnt/user/reactor.c (Arbeitskopie) @@ -61,8 +61,9 @@ { BOOL result; DWORD error; + int loop; - while (TRUE) { + for (loop = 1000; loop; loop--) { result = ReadFile(handle->rhandle, &handle->buffer, sizeof(handle->buffer), ======== > So I decide to add two other co_debug. PS: Your source was very globbered. -- Henry N. |
From: Henry N. <Henry.Ne@Arcor.de> - 2008-05-10 23:13:50
Attachments:
no-reactor-read-loop.patch
|
Henry Nestler wrote: > Paolo Minazzi wrote: >> Hi Henry, >> I added the lines you said me. >> I realize that during NO OUTPUT, I see continuosly the message >> "GetNumberOfConsoleInputEvent nothing", that is OK. >> When I launch my program that exec >> >> for (i=1 to 10000) printf("X"); >> >> I dont' see anything in the daemon-debug window ... I don't see >> "GetNumberOfConsoleInputEvent nothing". >> When the for cycle ends, The message "GetNumberOfConsoleInputEvent >> nothing" appears continuosly. > > Ok. I found some in > src/colinux/os/winnt/user/reactor.c:60 > > In "packet_read_async" it's loop without return on continues data > stream. An idea would be to remove the "while (TRUE)" and let it stop > after every ReadFile. Than the loops in console code can poll for keyboard. > > The negative side effect would be, that some other daemons goes slower. > But perhaps this is alos better for other bidirectional pipes? > > A mix between performance and as workarround we can do this: > =================================================================== > --- src/colinux/os/winnt/user/reactor.c (Revision 1038) > +++ src/colinux/os/winnt/user/reactor.c (Arbeitskopie) > @@ -61,8 +61,9 @@ > { > BOOL result; > DWORD error; > + int loop; > > - while (TRUE) { > + for (loop = 1000; loop; loop--) { > result = ReadFile(handle->rhandle, > &handle->buffer, > sizeof(handle->buffer), > ======== > >> So I decide to add two other co_debug. > > PS: Your source was very globbered. > ... Paolo wrote: > **************************************************************************************************** > As you can see, there are > > 1. calling global_window->loop > 2. console_window_t::loop > 3. GetNumberOfConsoleInputEvents nothing > CONTINE FROM point 1 > > The point is that during an heavy output the main cycle in the console > is not called. > It is not easy for me find a solution ... ideas ? > To make proofs more quickly, I need to installvmware with an > environment to rebuild colinux-daemon-console-nt.exe Try this: http://www.henrynestler.com/colinux/testing/devel-0.8.0/20080510-ntconsoleflood/ There I have remove the endless loop if console get flood of chars. You can stop it now with key ENTER or CTRL-C. But remember: The console output can have many chars in piped buffer. If you pressed ENTER, it can be long time to be see as accepted. It goes faster, if you minimised the nt-console after you have pressed the enter key. I think, the right way for the problem we have, should be to make the pipe buffer from Linux to console-output smaller. Currently it has no limit. If the buffer would be full earlyer, the console_window_t::loop will have access to keyboard faster. -- Henry N. |
From: Paolo M. <pao...@gm...> - 2008-05-11 08:18:56
|
Henry, I'm a litte confused. I have modified the while(TRUE) cycle you have pointed to me. But I have lose a lot of time because I cannot understand the following point. To recompile colinux I have to use - make colinux - make package The I move the *zip created in the dist directory, I unzip under Vista and I can run colinux. The problem is that the colinux-console-nt.exe that is contained in the package (the .zip file) does not output my log lines ! Yesterday to do the proofs I have copied directy the src/colinux/os/winnt/build/colinux-console-nt.exe and with this file I could see the new debug messages. ********************** My first question is : ********************** /home/paolo/0.7.2-fixed>ls -l $(find . -name "colinux-console-nt.exe") -rwxr-xr-x 1 root root 146365 2008-05-11 09:13 ./dist/dbg/colinux-console-nt.exe -rwxr-xr-x 1 root root 91648 2008-05-11 08:49 ./dist/norm/colinux-console-nt.exe lrwxrwxrwx 1 root root 69 2008-05-11 09:13 ./stable-colinux-20080118/src/colinux/os/winnt/ build/colinux-console-nt.exe -> .comake.build/colinux-console-nt.exe-ba3c03c231f0f6edd5aaef5da5917d6 c -rwxr-xr-x 1 paolo vboxusers 91648 2008-05-11 08:49 ./stable-colinux-20080118/src/colinux/os/winnt/ user/install/premaid/colinux-console-nt.exe ---------------------------------------------------------------------------------------------------- Under the dist directory I have created 2 dirs : norm and dbg. norm contains the unzip of the daemon.....zip dbg contains the unzip of daemon....dbg.zip As you can see there are 2 colinux-console-nt.exe with filesize 91648. I thought that these 2 files was the same. What I don't understand is that these 2 files are different ! This is shown by the following command : /home/paolo/0.7.2-fixed>diff dist/norm/colinux-console-nt.exe stable-colinux-20080118/src/colinux/os /winnt/build/colinux-console-nt.exe Binary files dist/norm/colinux-console-nt.exe and stable-colinux-20080118/src/colinux/os/winnt/build /colinux-console-nt.exe differ Now I know that I must use the src/colinux/os/winnt/build/colinux-console-nt.exe Why they are different ? If I don't understand this I loose a lot of time to do very simple proofs and I don't know well how I have to do. *********************** My second question is : *********************** I use the following line to run the colinux-debug-daemon: colinux-debug-daemon -d -p -s prints=0,misc=1,messages=0 With the src/colinux/os/winnt/build/colinux-console-nt.exe I can see my debug messages on the console Is it OK ? *********************** My last question is : *********************** To debug I have to use the daemon.zip or the daemon.dbg.zip ? What I have seen is that I can also use the daemon.zip. Is it correct ? PS: I will try your version .... |
From: Henry N. <Henry.Ne@Arcor.de> - 2008-05-11 09:28:31
|
Paolo Minazzi wrote: > I have modified the while(TRUE) cycle you have pointed to me. > But I have lose a lot of time because I cannot understand the following point. First: The remove of while(TRUE) was better, but injects double messages. Please use the build from today as file daemons-0.8.0-20080511.zip > To recompile colinux I have to use > - make colinux > - make package > > The I move the *zip created in the dist directory, I unzip under Vista > and I can run colinux. > The problem is that the colinux-console-nt.exe that is contained in > the package (the .zip file) > does not output my log lines ! > Yesterday to do the proofs I have copied directy the > > src/colinux/os/winnt/build/colinux-console-nt.exe > and with this file I could see the new debug messages. Some build optimisations are not working correctly. I have seen the same as you. Changes on files that objects are in the build.a archives are not updated at link time. There only helps "make clean" and then "make colinux && make packages" > ********************** > My first question is : > ********************** > > /home/paolo/0.7.2-fixed>ls -l $(find . -name "colinux-console-nt.exe") > -rwxr-xr-x 1 root root 146365 2008-05-11 09:13 ./dist/dbg/colinux-console-nt.exe > -rwxr-xr-x 1 root root 91648 2008-05-11 08:49 ./dist/norm/colinux-console-nt.exe > lrwxrwxrwx 1 root root 69 2008-05-11 09:13 > ./stable-colinux-20080118/src/colinux/os/winnt/ > build/colinux-console-nt.exe -> > .comake.build/colinux-console-nt.exe-ba3c03c231f0f6edd5aaef5da5917d6 > c > -rwxr-xr-x 1 paolo vboxusers 91648 2008-05-11 08:49 > ./stable-colinux-20080118/src/colinux/os/winnt/ > user/install/premaid/colinux-console-nt.exe > ---------------------------------------------------------------------------------------------------- > Under the dist directory I have created 2 dirs : norm and dbg. > norm contains the unzip of the daemon.....zip > dbg contains the unzip of daemon....dbg.zip > As you can see there are 2 colinux-console-nt.exe with filesize 91648. > > I thought that these 2 files was the same. > > What I don't understand is that these 2 files are different ! > This is shown by the following command : > > /home/paolo/0.7.2-fixed>diff dist/norm/colinux-console-nt.exe > stable-colinux-20080118/src/colinux/os > /winnt/build/colinux-console-nt.exe > Binary files dist/norm/colinux-console-nt.exe and > stable-colinux-20080118/src/colinux/os/winnt/build > /colinux-console-nt.exe differ > > Now I know that I must use the > src/colinux/os/winnt/build/colinux-console-nt.exe > > Why they are different ? > If I don't understand this I loose a lot of time to do very simple > proofs and I don't know well how I have to do. In dbg.zip exist the file from src/colinux/os/winnt/build/colinux-console-nt.exe, in the normal zip exist the file where debug symbols are stripped. The running binary are the same. This make no different. The only happens we have in debug are the symbols to convert adress into source linenumber or symbol name. Tools addr2line and gdb needs the dbg.zip > *********************** > My second question is : > *********************** > I use the following line to run the colinux-debug-daemon: > > colinux-debug-daemon -d -p -s prints=0,misc=1,messages=0 > > With the > src/colinux/os/winnt/build/colinux-console-nt.exe > I can see my debug messages on the console > > Is it OK ? No, the level for "co_debug" is 10, so you need highter on misc: colinux-debug-daemon -d -p -s misc=31 > *********************** > My last question is : > *********************** > To debug I have to use the daemon.zip or the daemon.dbg.zip ? > What I have seen is that I can also use the daemon.zip. Is it correct ? Yes. -- Henry N. |
From: Henry N. <Henry.Ne@Arcor.de> - 2008-05-11 10:37:51
Attachments:
no-reactor-read-loop2.patch
|
Paolos test source: > int pid; > > int main() > { > pid=fork(); > if (pid==0) > { > while (1) printf("X"); > } > else > { > char c[1024]; > read(STDIN_FILENO,c,1); > kill(pid,9); > } > } This have fixed now. See attached patch. In SVN this are the revision 1041, 1042, 1043 New executables: http://www.henrynestler.com/colinux/testing/devel-0.8.0/20080511-ntconsoleflood/ I had a Vista Home Premium for short time this day and was seen the problem. This was a Dual Core CPU, that improved the problem. We have a "reactor"-queue, that stores messages from Linux, if the user land task (ntconsole) on host is busy. Under Windows XP the queue have 1 or 2 entries if the ntconsole is flooded with Paolos source. Under Vista this queue goes up to 300.000 and many more entries, and eats 800MB or more memory. After running Paolos program one minute and press enter, than the key is registered, but the ntconsole is printing all the stuff from queue first. This can be long time. After minimise the nt-console, the enter key will be seen faster. I feel, this is the problem with Dual Core: The core with colinux runs faster as the ntconsole on other core can print. Is the ntconsole slower under Vista as under XP? Or Vista has a better event managment, and the "ReadFile" will never get an IO_PENDING, as long we have data on the kernel side. The changed source stops this problem now. Colinux driver goes into sleep for 100ms, if the user task is busy and we have 1024 messages in queue. This makes the flow better and stops from eating all the memory we have. The example source and the hanging "hexdump /dev/cobd1" from Paolo is fixed now. But, I don't know why Mark have no keyboard response at login prompt. Mark, please run on one command promt: mode con lines=200 cols=100 colinux-debug-daemon -d -p -s misc=31 Than start coLinux. Don't worry about XML code. The output should stop, if your Login promot is seen in the console. Interesting are only the lines if you pressing a key in the linux console. In the debugger you should seen such lines on every key pressing: process_key_event vkey:13 down code:1c flags:20 This debugging is only availabe in the executables from 20080511-ntconsoleflood. -- Henry N. |
From: Henry N. <Henry.Ne@Arcor.de> - 2008-05-11 11:27:14
|
Henry Nestler wrote: > Under Vista this queue goes up to 300.000 and many more entries, and > eats 800MB or more memory. After running Paolos program one minute Mistaken on some numbers: Total memory consumtion was 800MB, +100MB are from 300.000 entries have seen in queue after 1 minute running Paolos's source. 100MB goes free after the test program was stopped (CTRL-C and than console minimized). Memory and cpu have watched with "TinyResmeter". ;-) -- Henry N. |
From: Henry N. <Henry.Ne@Arcor.de> - 2008-05-11 22:12:18
|
Henry Nestler schrieb: > Paolos test source: >> int pid; >> >> int main() >> { >> pid=fork(); >> if (pid==0) >> { >> while (1) printf("X"); >> } >> else >> { >> char c[1024]; >> read(STDIN_FILENO,c,1); >> kill(pid,9); >> } >> } > > This have fixed now. See attached patch. > In SVN this are the revision 1041, 1042, 1043 > New executables: > http://www.henrynestler.com/colinux/testing/devel-0.8.0/20080511-ntconsoleflood/ The last have problems, if ntconsole will detach while the testprogramm is running. The "Sleep" loop must end, if the console will detach. New executables and the patch no-reactor-read-loop-v3.patch does it: http://www.henrynestler.com/colinux/testing/devel-0.8.0/20080511-ntconsoleflood/ Is commited as SVN revision 1046. By the while: WindowsXP can also bring in the troubble. Run taskmanager and select the tabbed "System performance". Runs the test program. Than open the contect menu inside the ncconsole text with right mouse key. Don't select any, only leave this menu opened. As long the context menu is opened, the old coLinux version adds many new messages into the queue. Kernel memory and swap file is incrasing. After 5 minutes got an interesting message: "...system32/lsass terminated. Windows is shuting down in 60 Seconds...". - Windows XP reboots fairly. :-) -- Henry N. |
From: Paolo M. <pao...@gm...> - 2008-05-10 09:15:12
|
I digit an error ! excuse me ! read(0,c,1); not read(1,c,1); The other I have written is OK ! only a small typo error ! Paolo On Thu, May 8, 2008 at 8:59 AM, Paolo Minazzi <pao...@gm...> wrote: > > On Tue, May 6, 2008 at 9:10 PM, Henry Nestler <Hen...@ar...> wrote: > > Hello Mark, > > > > Mark Rodriguez wrote: > >> I've tried getting coLinux running (tried latest release, stable, and > >> dev. snapshot) on my Vista laptop, but it consistently freezes all > >> input devices (keyboard and mouse don't work). Even after I'm unable > >> to move my mouse or type on my keyboard, I can see the console > >> messages (both on NT and FLTK) continue until it reaches the login. At > >> this point, I'm unable to type 'root' or navigate my mouse for any > >> other operation. It appears the machine is still alive since I'm able > >> to use my "non standard" function keys to do things like turn on the > >> keyboard light or access Lenovo's "ThinkVantage" menu options. > >> > >> Thinking this might be related to the console specifically, I even > >> tried running as a service, but it behaves the same way. Seems like > >> starting coLinux on Vista hijacks my input devices. The same > >> configuration works fine under XP. Any ideas, tips, suggestions? > > > > I feel, you have the same promblem as Andreas. > > Please try some of my debugging tips from help forum: > > http://sourceforge.net/forum/message.php?msg_id=4948804 > > > > At other coLinux users with running Vista: Exist any difference between > > your Vista versions? Build number, Professional/Home, Service Packs or > > what ever? > > > > Please ansewer here in the list, not in the forum. > > > > -- > > Henry N. > > > > Hello, > on my PC with Vista there is a small problem about CTRL-C > I run colinux-0.7.2 (with you fix, Henry :=) ) and console-nt. > Then I run the following command : > > > hexdump /dev/cobd1 > > where cobd1 is connected to my physical CDROM. > There are a lot of data. > If I want to stop, I press CTRL-C. > Under XP all is OK, the console-nt pass the CTRL-C to linux and > hexdump stops almost immediately. > > Under Vista CTRL-C doesn't stops the hexdump command. > To be more clear, in Vista CTRL-C is not always bad. > For example, if I compile a program with this command : > > > gcc myexample.c > > and I press CTRL-C during compilation, CTRL-C works OK and stops the compiler. > It seems that it depends on the amount of data that pass throught the > console-nt or someting similar. > > For Mark: > I dont't have your problem of freezing input device .... > It seems that on Vista everyone has a different problem :=( > > Henry, your fix is OK .... no more hangs after IPI Shortcut mode :=) > > Bye, > Paolo > |