Hi,
2009/1/7 Markus Wanner <[email protected]>:
> ...
> Can you reproduce what the OP reported?
Unfortunately no (and yes ... see the end)
In fact mtn diff --external doesn't work OOB because it tries to pass
arguments to execute in wrong way or lua execute is broken on win32.
Nevertheless lua execute doesn't quote strings with tabs. I can't find
definition of lua execute to confirm this.
When I fixed this the only thing i've got after doing "CTRL+C" while
kdiff3 was running was:
mtn: botan_pipe_cache.hh:41: invariant 'I(!pipe)' violated
mtn: saving current work set: 4 items
in debug log.
And all of this was using msys shell. But at some time while writing this post
i realized that windowz has also native shell, so ..
When using cmd as shell I can reproduce the bug and it appears
to be very strange.
I use kdiff3 as external diff tool - just for example.
Test:
- goto to workspace with >2 modified files
1. execute "mtn diff --external"
(kdiff3 is spawned)
2. CTRL+C on terminal
(kdiff3 lives and ... monotone still lives and ...)
(at this time crash dump is printed to debug log)
(second kdiff3 is spawned for next file)
3. Next CTRL+C on terminal
(no next kdiffs are spawned)
4. Close any of kdiff
(next kdiff is spawned)
5 Close all kdiffs
(monotone finally crashes - reports "fatal: memory access violation...
" and process ends)
[debug log for session attached]
Well this is strange ... and confirms how badly process control
is messed up on w32.
Daniel, you must have custom "external_diff" hook, could you send it
together with output of failed monotone execution with --debug flag ?
What shell do you use ?
Do you confirm this kind of strange monotone behaviour or you have
clean crash CTRL+C === monotone crash ?
Best regards,
--
Zbigniew Zagórski
/ software developer / geek / happy daddy /
Debug log of execution "mtn diff --external --debug"
... cut, unrelevant, lost log
mtn: selected node 2204 guarded_map.h parent 1685
mtn: adding node 2204 guarded_map.h parent 1685
mtn: selected node 2205 guarded_test.cpp parent 1685
mtn: adding node 2205 guarded_test.cpp parent 1685
#
# old_revision [fdce1ddd89744e27d98d6f76ed6bd24261f79fea]
#
# patch "guarded_test.cpp"
# from [6190488ef71339e1465a4293b0d5cae2d16f01c0]
# to [adc83b19e793491b1c6ea0fd8b46cd9f32e592fc]
#
# patch "http_server.cpp"
# from [09001b30346fccab467ba306972e7ee974d6c4a6]
# to [adc83b19e793491b1c6ea0fd8b46cd9f32e592fc]
#
# patch "list_files_generator.cpp"
# from [3fcaa778d753a132cdcb9294d7c2e1b9115eff17]
# to [adc83b19e793491b1c6ea0fd8b46cd9f32e592fc]
#
# patch "posix_signals.cpp"
# from [93b66589ab1d8c8ec6f089509503ea9cbf9abe29]
mtn: prepared statement SELECT 1 FROM files WHERE id = ? LIMIT 1
mtn: binding 1 parameters for SELECT 1 FROM files WHERE id = ? LIMIT 1
mtn: binding 1 with value '6190488ef71339e1465a4293b0d5cae2d16f01c0'
mtn: prepared statement SELECT data FROM files WHERE id = ?
mtn: binding 1 parameters for SELECT data FROM files WHERE id = ?
mtn: binding 1 with value '6190488ef71339e1465a4293b0d5cae2d16f01c0'
mtn: loading lua hook external_diff
mtn: searching for exe: kdiff3
mtn: spawning command: 'c:\programs\kdiff3\kdiff3.exe' 'kdiff3 -u -L1
"guarded_test.cpp old" C:\DOCUME~1\zagorski\LOCALS~1\Temp/mtn.V3QLTQ -L2
"guarded_test.cpp new" C:\DOCUME~1\zagorski\LOCALS~1\Temp/mtn.PEROA6 '
# to [adc83b19e793491b1c6ea0fd8b46cd9f32e592fc]
#
# patch "tickedit/tickedit.cpp"
# from [f1d085e6d55543ce948ecfda1db7dda32ff6d0b9]
# to [b525ce7ae4ee15e38cfd624d91323790e9bc9814]
#
COMMENT: <<< CTRL+C here >>>
mtn: botan_pipe_cache.hh:41: invariant 'I(!pipe)' violated
mtn: saving current work set: 4 items
mtn: finished saving work set
mtn: contents of work set:
mtn: Current work set: 4 items
mtn: ----- begin 'system_flavour' (in virtual void sanity::initialize(int,
char**, const char*), at sanity.cc:75)
mtn: Windows NT/2000/XP/2003 (5.1, build 2600, Service Pack 2) on ia32 (level
15, rev 1025)
mtn: ----- end 'system_flavour' (in virtual void sanity::initialize(int,
char**, const char*), at sanity.cc:75)
mtn: ----- begin 'cmdline_string' (in virtual void sanity::initialize(int,
char**, const char*), at sanity.cc:89)
mtn: 'mtn', 'diff', '--external', '--debug'
mtn: ----- end 'cmdline_string' (in virtual void sanity::initialize(int,
char**, const char*), at sanity.cc:89)
mtn: ----- begin 'string(lc_all)' (in virtual void sanity::initialize(int,
char**, const char*), at sanity.cc:94)
mtn: Polish_Poland.1250
mtn: ----- end 'string(lc_all)' (in virtual void sanity::initialize(int,
char**, const char*), at sanity.cc:94)
mtn: ----- begin 'full_version_string' (in virtual void
mtn_sanity::initialize(int, char**, const char*), at mtn-sanity.cc:23)
mtn: monotone 0.42 (base revision: 75ac12dd5b02025981edd6cd03caebb54721e481)
mtn: Running on : Windows NT/2000/XP/2003 (5.1, build 2600, Service
Pack 2) on ia32 (level 15, rev 1025)
mtn: C++ compiler : GNU C++ version 3.4.5 (mingw special)
mtn: C++ standard library: GNU libstdc++ version 20051201
mtn: Boost version : 1_34_1
mtn: Changes since base revision:
mtn: unknown
mtn: ----- end 'full_version_string' (in virtual void
mtn_sanity::initialize(int, char**, const char*), at mtn-sanity.cc:23)
COMMENT: <<< WT... monotone still running ??? >>>
mtn: lua stack: function
mtn: Lua::ok(): failed
mtn: binding 1 parameters for SELECT 1 FROM files WHERE id = ? LIMIT 1
mtn: binding 1 with value '09001b30346fccab467ba306972e7ee974d6c4a6'
mtn: binding 1 parameters for SELECT data FROM files WHERE id = ?
mtn: binding 1 with value '09001b30346fccab467ba306972e7ee974d6c4a6'
mtn: loading lua hook external_diff
mtn: searching for exe: kdiff3
mtn: spawning command: 'c:\programs\kdiff3\kdiff3.exe' 'kdiff3 -u -L1
"http_server.cpp old" C:\DOCUME~1\zagorski\LOCALS~1\Temp/mtn.S663XE -L2
"http_server.cpp new" C:\DOCUME~1\zagorski\LOCALS~1\Temp/mtn.285FYA '
mtn: binding 1 parameters for SELECT 1 FROM files WHERE id = ? LIMIT 1
mtn: binding 1 with value '3fcaa778d753a132cdcb9294d7c2e1b9115eff17'
mtn: binding 1 parameters for SELECT data FROM files WHERE id = ?
mtn: binding 1 with value '3fcaa778d753a132cdcb9294d7c2e1b9115eff17'
mtn: loading lua hook external_diff
mtn: searching for exe: kdiff3
mtn: spawning command: 'c:\programs\kdiff3\kdiff3.exe' 'kdiff3 -u -L1
"list_files_generator.cpp old" C:\DOCUME~1\zagorski\LOCALS~1\Temp/mtn.WAU8TY
-L2 "list_files_generator.cpp new"
C:\DOCUME~1\zagorski\LOCALS~1\Temp/mtn.952Y0S '
mtn: binding 1 parameters for SELECT 1 FROM files WHERE id = ? LIMIT 1
mtn: binding 1 with value '93b66589ab1d8c8ec6f089509503ea9cbf9abe29'
mtn: binding 1 parameters for SELECT data FROM files WHERE id = ?
mtn: binding 1 with value '93b66589ab1d8c8ec6f089509503ea9cbf9abe29'
mtn: loading lua hook external_diff
mtn: searching for exe: kdiff3
mtn: spawning command: 'c:\programs\kdiff3\kdiff3.exe' 'kdiff3 -u -L1
"posix_signals.cpp old" C:\DOCUME~1\zagorski\LOCALS~1\Temp/mtn.1ZRXA5 -L2
"posix_signals.cpp new" C:\DOCUME~1\zagorski\LOCALS~1\Temp/mtn.358UEK '
mtn: binding 1 parameters for SELECT 1 FROM files WHERE id = ? LIMIT 1
mtn: binding 1 with value 'f1d085e6d55543ce948ecfda1db7dda32ff6d0b9'
mtn: binding 1 parameters for SELECT data FROM files WHERE id = ?
mtn: binding 1 with value 'f1d085e6d55543ce948ecfda1db7dda32ff6d0b9'
mtn: loading lua hook external_diff
mtn: searching for exe: kdiff3
mtn: spawning command: 'c:\programs\kdiff3\kdiff3.exe' 'kdiff3 -u -L1
"tickedit/tickedit.cpp old" C:\DOCUME~1\zagorski\LOCALS~1\Temp/mtn.G969N3 -L2
"tickedit/tickedit.cpp new" C:\DOCUME~1\zagorski\LOCALS~1\Temp/mtn.1SSA5R '
mtn: statement cache statistics
mtn: prepared 10 statements
mtn: 5 executions of SELECT 1 FROM files WHERE id = ? LIMIT 1
mtn: 1 executions of SELECT 1 FROM heights LIMIT 1
mtn: 1 executions of SELECT 1 FROM manifests LIMIT 1
mtn: 1 executions of SELECT 1 FROM revisions LIMIT 1
mtn: 1 executions of SELECT 1 FROM rosters LIMIT 1
mtn: 1 executions of SELECT 1 FROM rosters WHERE id = ? LIMIT 1
mtn: 1 executions of SELECT checksum, data FROM rosters WHERE id = ?
mtn: 5 executions of SELECT data FROM files WHERE id = ?
mtn: 1 executions of SELECT data FROM revisions WHERE id = ?
mtn: 1 executions of SELECT id FROM revisions WHERE id = ?
COMMENT: <<< and crashed after some loop (lua or c++) has ended >>>
d:\bin\mtn.exe: fatal: memory access violation
this is almost certainly a bug in monotone.
please send this error message, the output of 'd:\bin\mtn.exe version --full',
and a description of what you were doing to [email protected]
D:\oss\tinfra\sandbox>dif _MTN
_______________________________________________
Monotone-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/monotone-devel