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

Reply via email to