рд╡рд┐рдВрдбреЛрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП ReactOS рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ! рдЫрд╡рд┐


рдореЗрд░рд╛ рдирд╛рдо рд╕реНрдЯреЗрдирд┐рд╕реНрд▓рд╛рд╡ рд╣реИ рдФрд░ рдореБрдЭреЗ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рд╣реИред рдпрд╣ рд╣реИрдмрд░ рдкрд░ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рд▓реЗрдЦ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдмрдирд╛рдпрд╛ рд╣реИ:



рдпрд╣ рд▓реЗрдЦ рд░реВрд╕реА рдкрд░ рдореЗрд░реЗ рдкрд╣рд▓реЗ рд▓реЗрдЦ рдХрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рд╣реИред


рдореБрдЭреЗ рдЗрд╕ рдХрд╣рд╛рдиреА рдореЗрдВ рдореБрдЦреНрдп рдЖрдВрдХрдбрд╝реЗ рдкреЗрд╢ рдХрд░рдиреЗ рджреЛ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдЧ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдЯ рдХреЛ рд░реЛрдХрдиреЗ рд╕реЗ рд░реЛрдХ рджрд┐рдпрд╛ рдерд╛ - рдлреНрд░реЗрдВрдЪ рдбреЗрд╡рд▓рдкрд░ рд╣рд░рдореЗрд╕ рдмреЗрд▓реЗрд╕реНрдХрд╛-рдореЛрдЯреЛ (рдпрд╛ рд╕рд┐рд░реНрдл hbelusca рдЙрдкрдирд╛рдо рдХреЗ рд╕рд╛рде рд╣рд░реНрдореАрд╕) рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ ( x86corez рдЙрдкрдирд╛рдо рдХреЗ рд╕рд╛рде)ред


рдХрд╣рд╛рдиреА рд░рд┐рдПрдХреНрдЯреНрд╕ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЖрдИрдЖрд░рд╕реА рдЪреИрдирд▓ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ:


 Jun 03 18:52:56 <hbelusca> Anybody want to work on some small problem? If so, can someone figure out why this problem https://jira.reactos.org/browse/CORE-12931 happens on ReactOS? :D Jun 03 18:53:13 <hbelusca> That would help having a good ROS self-hosting system with git support. Jun 03 18:53:34 <hbelusca> (the git assertion part only). 

рдбреАрдмреНрд░реАрдлрд┐рдВрдЧ


рдЪреВрдВрдХрд┐ ReactOS рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо Windows Server 2003 рд╣реИ, Git рд╕рдВрд╕реНрдХрд░рдг 2.10.0 рдХреЛ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ - рдпрд╣ Windows XP рдФрд░ 2003 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЕрдВрддрд┐рдо рд╣реИ ред


рд░рд┐рдПрдХреНрдЯреЛрд╕ рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд╣рд░реА рд▓рдХреНрд╖рдг рдмрд▓реНрдХрд┐ рдЕрд╕реНрдкрд╖реНрдЯ рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЧрд┐рдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдорджрдж рд╕рдВрджреЗрд╢ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк git clone рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд┐рд░реНрдл git --version рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдЦрд╛рд▓реА рд╣реА рд░рд╣рддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдпрд╣ рдПрдХ рдЬреЛрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:


 git.exe clone -v "https://github.com/minoca/os.git" "C:\Documents and Settings\Administrator\Bureau\minocaos" A ssertionfailed ! P rogram : C : \ P rogram F iles \ G it \ mingw 3 2 \ bin \ git . exe F ile : exec _ cmd . c , L ine 2 3 E xpression : argv 0 _ path This application has requested the Runtime to terminate in an unusual way. Please contact the application's support team for more information. 

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдЧрд┐рдЯ рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рдФрд░ рдЗрд╕рдиреЗ рд╣рдорд╛рд░реА рдЬрд╛рдВрдЪ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХреАред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдмреНрд▓реЙрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛, рдЬрд╣рд╛рдВ рдмрд┐рдирд╛ рдЕрдкрд╡рд╛рдж рдХреЗ рдЕрдкрд╡рд╛рдж рд╣реБрдЖ: https://github.com/git-for-windows/git/blob/4cde6287b84b8f4c5ccb4062617171a2f3d7fc78/exec_cmd.c#L23


 char *system_path(const char *path) { /* snip */ #ifdef RUNTIME_PREFIX assert(argv0_path); // it asserts here assert(is_absolute_path(argv0_path)); /* snip */ #endif strbuf_addf(&d, "%s/%s", prefix, path); return strbuf_detach(&d, NULL); } 

рдФрд░ argv0_path рд╡реИрд░рд┐рдПрдмрд▓ рдорд╛рди рдЗрд╕ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ:


 const char *git_extract_argv0_path(const char *argv0) { const char *slash; if (!argv0 || !*argv0) return NULL; slash = find_last_dir_sep(argv0); if (slash) { argv0_path = xstrndup(argv0, slash - argv0); return slash + 1; } return argv0; } 

рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдпрд╣ рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓реА рддреЛ рдореИрдВрдиреЗ рдЖрдИрдЖрд░рд╕реА рдЪреИрдирд▓ рдХреЛ рдХреБрдЫ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗ:


 Jun 03 19:04:36 <x86corez> hbelusca: https://github.com/git-for-windows/git/blob/4cde6287b84b8f4c5ccb4062617851a2f3d7fc78/exec_cmd.c#L23 Jun 03 19:04:41 <x86corez> assertion is here Jun 03 19:04:57 <hbelusca> yes I know, I've seen the code yesterday. The question is why it's FALSE on ROS but TRUE on Windows. Jun 03 19:06:02 <x86corez> argv0_path = xstrndup(argv0, slash - argv0); Jun 03 19:06:22 <x86corez> xstrndup returns NULL %-) Jun 03 19:06:44 <hbelusca> ok, so what's the values of argv0 and slash on windows vs. on ROS? :P Jun 03 19:08:48 <x86corez> good question! 

рдЪрд░ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп argv[0] рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдореЗрдВ рд╢реВрдиреНрдп рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╛рдо рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ ...


 Jun 03 20:15:21 <x86corez> hbelusca: surprise... git uses its own xstrndup implementation Jun 03 20:15:35 <x86corez> so I can't simply hook it xD Jun 03 20:15:56 <hbelusca> well, with such a name "xstrndup" it's not surprising it's its own implementation Jun 03 20:16:04 <x86corez> probably I would need an user-mode debugger... like OllyDbg Jun 03 20:16:09 <hbelusca> that's everything but standardized function. Jun 03 20:16:24 <hbelusca> x86corez: ollydbg should work on ROS. Jun 03 20:16:30 <mjansen> what are you breaking today? Jun 03 20:16:44 <x86corez> mjansen: https://jira.reactos.org/browse/CORE-12931 Jun 03 20:16:51 <hbelusca> (of course if you also are able to compile that git with symbols and all the stuff, it would be very nice) 

рдХрд╛рд░реНрдп


рдЙрд╕рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рд╕реАрдзреЗ рд╕реНрд░реЛрдд рд╕реЗ рдЧрд┐рдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрдВрд╕реЛрд▓ рдкрд░ рд╕реАрдзреЗ "рдордХреНрдЦреА рдкрд░" рдмреНрдпрд╛рдЬ рдХреЗ рдЪрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛ред рдореИрдВрдиреЗ рдЗрд╕ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╕рдВрдЧрдд рдЧрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рд╢рд╛рдЦрд╛ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рд╣реИ: https://github.com/git-for-windows/git/tree/v2.10.0-rc2


Mingw32 рдЯреВрд▓рдХрд┐рди рдХреА рд╕реНрдерд╛рдкрдирд╛ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рд╣реБрдИ рдФрд░ рдореИрдВрдиреЗ рдЕрднреА рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрдЯреЗрдк-рдмрд╛рдп-рд╕реНрдЯреЗрдк рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓реНрд╕ рдореЗрдВ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдЕрдирдХрдореНрдлрд░реНрдЯреЗрдмрд▓ рдиреБрдХрд╕рд╛рди рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рддреБрд░рдВрдд рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛:


рдЫрд╡рд┐


рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╣реЙрд▓ (рдЖрдИрдЖрд░рд╕реА рдЪреИрдирд▓) рд╕реЗ рд╕рдВрдХреЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рднреА рд╕рдВрдХрд▓рди рд╕рдордп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдЧрд░ рдХреЛрдИ рдореЗрд░реЗ рдХрджрдореЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рддрд░реАрдХрд╛ рд╣реИ: https://pastebin.com/ZiA9MaKt


рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдмрдЧ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрдИ рдбрд┐рдмрдЧ рдкреНрд░рд┐рдВрдЯ рдХреЛ main() рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдЧрд┐рдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ common-main.c main() рд╕реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ:


 int main(int argc, const char **argv) { /* * Always open file descriptors 0/1/2 to avoid clobbering files * in die(). It also avoids messing up when the pipes are dup'ed * onto stdin/stdout/stderr in the child processes we spawn. */ //DebugBreak(); printf("sanitize_stdfds(); 1\n"); sanitize_stdfds(); printf("git_setup_gettext(); 1\n"); git_setup_gettext(); /* * Always open file descriptors 0/1/2 to avoid clobbering files * in die(). It also avoids messing up when the pipes are dup'ed * onto stdin/stdout/stderr in the child processes we spawn. */ printf("sanitize_stdfds(); 2\n"); sanitize_stdfds(); printf("git_setup_gettext(); 2\n"); git_setup_gettext(); printf("before argv[0] = %s\n", argv[0]); argv[0] = git_extract_argv0_path(argv[0]); printf("after argv[0] = %s\n", argv[0]); restore_sigpipe_to_default(); printf("restore_sigpipe_to_default(); done\n"); return cmd_main(argc, argv); } 

рдореБрдЭреЗ рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓рд╛ рд╣реИ:


 C:\>git --version sanitize_stdfds(); 1 git_setup_gettext(); 1 sanitize_stdfds(); 2 git_setup_gettext(); 2 before argv[0] = git after argv[0] = git restore_sigpipe_to_default(); done A ssertionfailed ! (cutted a part of error message which is the same as the one above) 

рдХреЛрдИ рдпрд╣ рдорд╛рди рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, argv[0] рдорд╛рди рд╕рд╣реА рд╣реИред рдореБрдЭреЗ рдбрд┐рдмрдЧрд░ рдХреЗ рдЕрдВрджрд░ git рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП OllyDbg, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ ...


 Jun 04 01:54:46 <sanchaez> now please try gdb/ollydbg in ROS Jun 04 01:58:11 <sanchaez> you have gdb in RosBE Jun 04 01:58:20 <sanchaez> just in case :p Jun 04 01:59:45 <x86corez> ollydbg says "nope" with MEMORY_MANAGEMENT bsod Jun 04 02:00:07 <x86corez> !bc 0x0000001A Jun 04 02:00:08 <hTechBot> KeBugCheck( MEMORY_MANAGEMENT ); Jun 04 02:00:13 <hbelusca> :/ Jun 04 02:00:49 <sanchaez> welp Jun 04 02:00:56 <sanchaez> you only have one option now :D 

рдФрд░ рдпрд╣реАрдВ рдкрд░ рд╕рд╛рдВрдЪреЗрдЬ рдиреЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╡рд┐рдЪрд╛рд░ рд╕реБрдЭрд╛рдпрд╛ рдЬреЛ рдХрдИ рдЪреАрдЬреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рддрд╛ рд╣реИ !


рдЫрд╡рд┐


рдЕрднрд┐рдХрдерди рдЕрдм рдирд╣реАрдВ рд╣реБрдЖ, рдФрд░ git рдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ред


 Jun 04 02:23:40 <x86corez> it prints! Jun 04 02:23:44 <x86corez> but only in gdb Jun 04 02:23:53 <hbelusca> oh Jun 04 02:24:00 <hbelusca> C:\git/git.exe Jun 04 02:24:13 <hbelusca> I wonder whether it's the same in windows, or not. 

рдорд╛рдорд▓рд╛ рдореГрдд рдХреЗрдВрджреНрд░ рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдореЗрдВ рдЧрд┐рдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рд╕рд╣реА рддрд░реАрдХрд╛ рдкрд╛рдпрд╛!


рдЫрд╡рд┐


рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдереА рдХрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ git рдиреЗ рдкреВрд░реНрдг рдкрде рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдереАред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЗрд╕рдХреЗ рдбрд┐рдмрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреА рддреБрд▓рдирд╛ рдХреАред рдирддреАрдЬреЛрдВ рдиреЗ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рд╣реИрд░рд╛рди рдХрд░ рджрд┐рдпрд╛ред


рдЫрд╡рд┐


рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ argv[0] рдорд╛рди рдореЗрдВ git.exe рдмрд╛рдЗрдирд░реА рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рд╕рдорд╛рд╣рд┐рдд рд╣реИред


 Jun 05 23:01:44 <hbelusca> x86corez: can you try to run git also by not using cmd.exe? Jun 05 23:02:05 <hbelusca> (to exclude the possibility it's cmd that doesn't call Createprocess with a complete path) Jun 05 23:02:09 <hbelusca> while I think it should... Jun 05 23:02:30 <x86corez> not using cmd... moment Jun 05 23:02:55 <hbelusca> x86corez: alternatively, on windows, try starting git using our own cmd.exe :) 

рд╣реЗрдореАрдЬрд╝ рдиреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рд░рд┐рдПрдХреНрдЯреЛрд╕ cmd.exe рдПрдХ рджреЛрд╖реА рдШрдЯрдХ рд╣реИ ...


рдЫрд╡рд┐


рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдиреЗ рдкреБрд╖реНрдЯрд┐ рдХреА рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХрд╣реАрдВ рдФрд░ рд╣реИред


 Jun 05 23:04:38 <x86corez> ROS cmd is not guilty Jun 05 23:07:57 <hbelusca> If there was a possibility to consult the received path, before looking at the contents of argvs... ? Jun 05 23:08:30 <x86corez> dump contents of actual command line? Jun 05 23:08:39 <hbelusca> yeah Jun 05 23:09:39 <hbelusca> The thing you retrieve using GetCommandLineW Jun 05 23:10:03 <hbelusca> (which is, after simplifications, basically : NtCurrentPeb()->ProcessParameters->CommandLine ) Jun 05 23:10:59 <hbelusca> Also I was thinking it could be a side-effect of having (or not having) git path into the env-vars.... Jun 05 23:12:17 <x86corez> hbelusca, command line is "git --version" Jun 05 23:12:34 <hbelusca> Always? Jun 05 23:12:39 <x86corez> Yes, even on Windows Jun 05 23:15:13 <hbelusca> ok but then it would be nice if these different results are at least the same on Windows and on ROS, so that we can 100% exclude problems outside of msvcrt. 

рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ ReactOS msvcrt.dll рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдерд╛ред рдореИрдВрдиреЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╣рд╛рдБ git.exe рд╕реНрдерд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реАред рдорд╛рд░реНрдХ рдиреЗ рдПрдХ .local рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛:


 Jun 05 22:59:01 <mjansen> x86corez: add .local file next to msvcrt.dll ;) Jun 05 22:59:47 <mjansen> exename.exe.local Jun 05 23:00:17 <x86corez> just an empty file? Jun 05 23:00:21 <mjansen> yea Jun 05 23:00:49 <hbelusca> mjansen: do we support these .local files? Jun 05 23:00:52 <mjansen> we dont Jun 05 23:00:54 <mjansen> windows does Jun 05 23:15:48 <x86corez> moment... I'll try with .local Jun 05 23:18:43 <x86corez> mjansen: I've created git.exe.local but it still doesn't load msvcrt.dll in this directory 

рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рд╡рд┐рдзрд┐ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рдереАред рд╢рд╛рдпрдж рдпрд╣ рддрдереНрдп рдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ (2008 R2) рдХреЗ рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕рднреА рдкреНрд░рдпреЛрдЧ рдХрд┐рдПред


рдЖрдЦрд┐рд░реА рд╡рд┐рдЪрд╛рд░ рд╣рд░реНрдореАрд╕ рдиреЗ рд╕реБрдЭрд╛рдпрд╛ рдерд╛:


 Jun 05 23:19:28 <hbelusca> last solution: patch "msvcrt" name within git and perhaps other mingwe dlls ^^ Jun 05 23:20:12 <x86corez> good idea about patching! 

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ msvcrt рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ WinHex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ msvcrd рдХреЗ рд╕рд╛рде msvcrd рдмрджрд▓ рджрд┐рдпрд╛, рдФрд░ рддрджрдиреБрд╕рд╛рд░ ReactOS msvcrt.dll рдХрд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛, рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рд╣реИрдВ:


рдЫрд╡рд┐


 Jun 05 23:23:29 <x86corez> Yes! guilty is msvcrt :) Jun 05 23:25:37 <hbelusca> ah, so as soon as git uses our msvcrt we get the problem on windows. Jun 05 23:25:38 <x86corez> hbelusca, mjansen, https://image.prntscr.com/image/FoOWnrQ4SOGMD-66DLW16Q.png Jun 05 23:25:58 <hbelusca> aha and it asserts <3 Jun 05 23:26:03 <hbelusca> (it shows the assertion now) 

рдмрдЧ рдмрди рдЧрдпрд╛ рдЕрдм рд╣рдо рдПрдХ рд╣реА рдЬреЛрд░ рдорд╛рд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ! рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕реНрд░реЛрдд ReactOS msvcrt рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред


рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЕрднрд┐рдХрдерди рд╕рдВрджреЗрд╢ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


 Jun 05 23:26:13 <x86corez> but it prints text and correctly. Jun 05 23:26:20 <hbelusca> oh Jun 05 23:26:33 <x86corez> and on ROS it doesn't print in most cases xD Jun 05 23:26:38 <hbelusca> so also it excludes another hypothesis, namely that it could have been a bug in our msvcrt/crt Jun 05 23:26:56 <hbelusca> So possibly a strange bug in our console 

рдЗрд╕рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ msvcrt рдореЗрдВ рдПрдкреАрдЖрдИ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЦреЛрдЬрдирд╛ рдкрдбрд╝рд╛ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкреВрд░рд╛ рд░рд╛рд╕реНрддрд╛ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ googled рдФрд░ рд╕рдорд╕реНрдпрд╛ _pgmptr рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╣реИред


 Jun 06 00:07:43 <x86corez> https://msdn.microsoft.com/en-us/library/tza1y5f7.aspx Jun 06 00:07:57 <x86corez> When a program is run from the command interpreter (Cmd.exe), _pgmptr is automatically initialized to the full path of the executable file. Jun 06 00:08:01 <x86corez> this ^^) Jun 06 00:08:50 <hbelusca> That's what GetModuleFileName does. Jun 06 00:09:04 <x86corez> yeah Jun 06 00:10:30 <hbelusca> Of course in ROS msvcrt we don't do this, but instead we initialize pgmptr to what argv[0] could be. Jun 06 00:11:08 <hbelusca> That's one thing. Jun 06 00:11:34 <hbelusca> The other thing is that nowhere it appears (in MS CRT from VS, or in wine) that argv is initialized using pgmptr. Jun 06 00:13:33 <x86corez> hbelusca, I've checked argv[0] in some ROS command line tools, running them in Windows Jun 06 00:13:56 <x86corez> they all interpret argv[0] as command line, not full path Jun 06 00:14:04 <x86corez> so... I think it's git specific behaviour Jun 06 00:14:16 <x86corez> or specific mingw compiler settings Jun 06 00:28:12 <hbelusca> x86corez: I'm making a patch for our msvcrt, would be nice if you could test it :) Jun 06 00:28:21 <x86corez> I'll test it 

рд╣реЗрдореАрдЬрд╝ рдиреЗ рдкреИрдЪ рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рднреЗрдЬрд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛, рдФрд░ рдЗрди рдЪрд╛рд▓реЛрдВ рдХреЗ рдмрд╛рдж рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИ!


рдЫрд╡рд┐


 Jun 06 00:34:26 <x86corez> hbelusca, IT WORKS! Jun 06 00:35:10 <hbelusca> LOL Jun 06 00:35:18 <hbelusca> So it seems that something uses pgmptr to rebuild an argv. Jun 06 00:35:52 <x86corez> I've even able to clone :) Jun 06 00:36:19 <hbelusca> \o/ Jun 06 00:36:21 <gigaherz> 2.10.0-rc2? not the release? Jun 06 00:36:24 <hbelusca> ok I'm gonna commit that stuff. Jun 06 00:36:43 <hbelusca> x86corez: gonna have ROS self-hosting <33 Jun 06 00:36:48 <x86corez> yeah! Jun 06 00:37:01 <x86corez> gigaherz: I've built that from sources Jun 06 00:37:37 <gigaherz> oh, for testing this bug? o_O Jun 06 00:37:50 <sanchaez> yes, you missed the fun :p Jun 06 00:39:46 <x86corez> git 2.10.0-windows.1 (release) works too! Jun 06 00:39:54 <encoded> commit!!! 

рдЕрдВрддрднрд╛рд╖рдг


рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдПрдХ рдФрд░ рдмрдЧ рдЬреЛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рд░рд┐рдПрдХреНрдЯреЛрд╕ рдХреЛ рдмрдирд╛рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ рд╕рд╛рдореВрд╣рд┐рдХ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдордЬрд╝реЗрджрд╛рд░ рд╕рдВрдпреЛрдЧ рдпрд╣ рддрдереНрдп рд╣реИ рдХрд┐ рдПрдХ рдФрд░ рдмрдЧ рдкрд╣рд▓реЗ рдПрдХ рд╣реА msvcrt рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдЕрд░реНрдерд╛рдд qsort рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ) рдореЗрдВ qsort рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ ReactOS рдореЗрдВ USB рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рдерд╛ред


рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦрд┐рдд рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реВрдВ, рджреЛрдиреЛрдВ рдмрдВрдж рдФрд░ рдЦреБрд▓рд╛ рд╕реНрд░реЛрддред рдореИрдВ 2014 рд╕реЗ рд░рд┐рдПрдХреНрдЯреЛрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдорджрдж рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ 2017 рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдпрд╣ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣реИ! рдЖрдк рдЙрд╕ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдкреИрдорд╛рдиреЗ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рдирд┐рд╡реЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдХ рд╕реБрдЦрдж рдПрд╣рд╕рд╛рд╕ рднреА рдерд╛ рдХрд┐ рдПрдХ рдХрдо рдмрдЧ рд╣реИ! :)


рдХрд┐рд╕реА рдХреЛ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд░рд┐рдПрдХреНрдЯреЛрд╕ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХреНрдпреЛрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдбреЗрд▓реНрдлреА рд╣реИред рд╢рд╛рдпрдж рдЗрд╕реАрд▓рд┐рдП Win32 рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛрдЬ рдПрдирдЯреА рдХрд╛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдФрд░ рдореБрдлреНрдд рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд░рд┐рдПрдХреНрдЯреЛрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреБрд░рд╛рдиреЗ рд╕рдкрдиреЗ рдХреЛ рд╕рдЪ рдХрд░ рджреЗрддрд╛ рд╣реИ - рдпрд╣ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╣реБрдб рдХреЗ рддрд╣рдд рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рд▓реЗрдЦ рдкрд╕рдВрдж рдЖрдпрд╛ред рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИ!



Source: https://habr.com/ru/post/hi439580/


All Articles