[Mono-bugs] [Bug 74805][Maj] Changed - sometimes setting a variable doesn't change the inferior's execution

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Wed Jul 20 08:47:48 EDT 2005


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by martin at ximian.com.

http://bugzilla.ximian.com/show_bug.cgi?id=74805

--- shadow/74805	2005-05-03 03:51:03.000000000 -0400
+++ shadow/74805.tmp.6316	2005-07-20 08:47:48.000000000 -0400
@@ -1,14 +1,14 @@
 Bug#: 74805
 Product: Mono: Debugger
 Version: unspecified
-OS: 
+OS: unknown
 OS Details: 
 Status: NEW   
 Resolution: 
-Severity: 
+Severity: Unknown
 Priority: Major
 Component: backend
 AssignedTo: toshok at ximian.com                            
 ReportedBy: toshok at ximian.com               
 QAContact: mono-bugs at ximian.com
 TargetMilestone: ---
@@ -65,6 +65,34 @@
 (mdb) print ok
 (System.Boolean) False
 (mdb) set ok = true
 (mdb) c
 true
 Process @4 terminated normally.
+
+------- Additional Comments From martin at ximian.com  2005-07-20 08:47 -------
+I debugged this and it's due to incorrect line number information - at
+least on x86_64.  We're generating the following code for this:
+
+=====
+0x400177c0      push   %rbp
+0x400177c1      mov    %rsp,%rbp
+0x400177c4      push   %r14
+0x400177c6      push   %r15
+0x400177c8      sub    $0x10,%rsp
+0x400177cc      mov    %rdi,0xffffffffffffffe8(%rbp)
+0x400177d0      callq  0x401ce8
+0x400177d5      mov    %rax,%r15
+0x400177d8      xor    %r14,%r14
+0x400177db      callq  0x40017c40:X.foo()
+0x400177e0      mov    %rax,%r14
+0x400177e3      and    $0xff,%r14
+0x400177ea      mov    %r14,%rax
+0x400177ed      and    $0xff,%rax
+0x400177f3      test   %eax,%eax
+0x400177f5      je     0x4001781d:X.Main(System.String[])+0x5d
+=====
+
+The `if (ok)' begins at 0x400177ea - `ok' is stored in %r14 which is
+then copied into %rax and checked.  However, the debugger stops at
+0x400177ed - so if you modify the variable, the debugger correctly
+changes %r14, but it's already copied into %rax.


More information about the mono-bugs mailing list