Bug 79484 - CDT session dies when GDB is unable to parse a particular stack frame
Summary: CDT session dies when GDB is unable to parse a particular stack frame
Status: REOPENED
Alias: None
Product: CDT
Classification: Tools
Component: cdt-debug (show other bugs)
Version: 2.1   Edit
Hardware: PC Windows 2000
: P3 normal with 1 vote (vote)
Target Milestone: ---   Edit
Assignee: cdt-debug-inbox@eclipse.org CLA
QA Contact: Jonah Graham CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-11-25 08:21 EST by Oyvind Harboe CLA
Modified: 2020-09-04 15:18 EDT (History)
0 users

See Also:


Attachments
This log contains something that is quite possibly a real CDT bug (8.92 KB, text/plain)
2004-11-26 08:51 EST, Oyvind Harboe CLA
no flags Details
Log (4.93 KB, text/plain)
2004-11-30 07:42 EST, Oyvind Harboe CLA
no flags Details
Shows CDT GUI before trouble begins (111.05 KB, image/jpeg)
2004-11-30 07:43 EST, Oyvind Harboe CLA
no flags Details
shows debugger after watch expression has been added (143.17 KB, image/jpeg)
2004-11-30 07:44 EST, Oyvind Harboe CLA
no flags Details
After issuing step a couple of times w/p[0] watch expression (165.88 KB, image/jpeg)
2004-11-30 07:45 EST, Oyvind Harboe CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Oyvind Harboe CLA 2004-11-25 08:21:24 EST
My debugger stopped working when I stepped out of a fn. 

I wonder if CDT is getting confused by a tailjump....

[1,101,388,634,748] &"step\n"
[1,101,388,634,988] ~"Current language:  auto; currently c++\n"
[1,101,388,634,988]
7931^done,reason="end-stepping-range",thread-id="0",frame={addr="0x01049550",fun\
c="_GLOBAL__I.49000__ZN17cyg_io_init_classC1Ev_cygdrive_c_cdtworkspace_ecos_repository_ecos_packages\
_io_common_current_src_ioinit.cxxqhvkhb",args=[],file="/cygdrive/c/cdtworkspace/ecos-repository/ecos\
/packages/io/common/current/src/ioinit.cxx",line="65"}
[1,101,388,634,988] (gdb) 
[1,101,388,634,988] 7932 info threads
[1,101,388,634,998] &"info threads\n"
[1,101,388,634,998] &"warning: RMT ERROR : failed to get remote thread list\n"
[1,101,388,634,998] &"\n"
[1,101,388,634,998] 7932^done
[1,101,388,634,998] (gdb) 
[1,101,388,634,998] 7933-stack-info-depth
[1,101,388,635,128] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,388,635,128] 7933^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,388,635,128] (gdb) 
[1,101,388,635,138] 7933-stack-info-depth
[1,101,388,635,138] 7934-var-update var10
[1,101,388,635,138] 7933^done,depth="4"
[1,101,388,635,138] (gdb) 
[1,101,388,635,198] 7934^done,changelist={}
[1,101,388,635,198] (gdb)
Comment 1 Oyvind Harboe CLA 2004-11-25 08:48:06 EST
Arggghhh....

I believe the problem is specific to gdb 6.2.1

$ ~/gdbbuild/install/bin/arm-elf-gdb  -v                               
GNU gdb 6.2.1

With this GDB, it works.

$ arm-elf-gdb -v
GNU gdb 5.3 (eCosCentric)
Comment 2 Oyvind Harboe CLA 2004-11-25 08:48:44 EST
My older GDB crashes when I try to view registers in CDT. !"¤&#"&"#¤& :-)

Comment 3 Oyvind Harboe CLA 2004-11-25 08:53:55 EST
Choose between two broken GDB's....
Comment 4 Oyvind Harboe CLA 2004-11-25 12:11:20 EST
In retrospect I think the error message from GDB should be reviewed. Broken
GDB's are not going away.

Øyvind
Comment 5 Oyvind Harboe CLA 2004-11-26 08:51:24 EST
Created attachment 16165 [details]
This log contains something that is quite possibly a real CDT bug

These exceptions where generated when debugging the same problem, but this
particular exception isn't easily reproduceable.


java.lang.NullPointerException
	at
org.eclipse.cdt.debug.internal.core.model.CExpression.getExpressionText(CExpression.java:58)

	at
org.eclipse.cdt.debug.internal.core.model.CExpression.getExpressionString(CExpression.java:163)

	at
org.eclipse.cdt.debug.internal.core.model.AbstractCValue.evaluateAsExpression(AbstractCValue.java:48)

	at
org.eclipse.cdt.debug.internal.ui.CValueDetailProvider$1.run(CValueDetailProvider.java:41)

	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:106)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:2749)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2434)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1377)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1348)
	at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:254)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141)

	at
org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:96)
	at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:335)

	at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273)
	at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:183)
	at org.eclipse.core.launcher.Main.run(Main.java:644)
	at org.eclipse.core.launcher.Main.main(Main.java:628)
Comment 6 Oyvind Harboe CLA 2004-11-26 09:02:53 EST
I've verified that GDB is temporarly unable to parse the stackframe.

As soon as I step out of the fn, GDB resumes normal operation.




Index: Thread.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java,v
retrieving revision 1.12
diff -u -r1.12 Thread.java
--- Thread.java	18 Nov 2004 16:07:54 -0000	1.12
+++ Thread.java	26 Nov 2004 13:59:38 -0000
@@ -181,7 +181,12 @@
 					}
 				}
 			} catch (MIException e) {
-				throw new MI2CDIException(e);
+				// FIX!!! by commenting out the line below, I was able to show
+				// that although GDB freaks out on the corrupt stack frame, the 
+				// GDB debug session recovers as soon as we step out of the 
+				// area.
+			//	throw new MI2CDIException(e);
+				stackdepth=0;
 			} finally {
 				target.setCurrentThread(currentThread, false);
 			}
Comment 7 Alain Magloire CLA 2004-11-29 12:25:26 EST
> These exceptions where generated when debugging the same problem, but this
> particular exception isn't easily reproduceable.


> java.lang.NullPointerException
	at
>
org.eclipse.cdt.debug.internal.core.model.CExpression.getExpressionText(CExpression.java:58)


Oyvind ... please do not do that ... i.e. do not mixed PR(issues)
It makes it very hard for us to follow and come up
with a valid fix. 
The NPE should been a new PR, see:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=79678
Comment 8 Alain Magloire CLA 2004-11-29 12:28:56 EST
> I've verified that GDB is temporarly unable to parse the stackframe.
> As soon as I step out of the fn, GDB resumes normal operation.

Why is this patch needed, If you look at the code carefully in
Thread.getStackFrameCount().  When the first try fails
we try a second time and decrement the depth by one ignoring
the corrupt frame,  Question why it does not work for you ?
Are we looking at the right code/bug ?
Why stackdepth = 0 ? you may have other valid frames in the thread




Comment 9 Oyvind Harboe CLA 2004-11-29 13:37:26 EST
>Why is this patch needed,

Just to clarify. The diff is not patch. 

It is just some tweaks I did in order to prove that GDB recovered from this
temporary condition.

Øyvind
Comment 10 Oyvind Harboe CLA 2004-11-29 13:40:13 EST
>Oyvind ... please do not do that ... i.e. do not mixed PR(issues)

I'll try.

The problem is that I need to distinguish between writing up problems as I find
them, and diving into them as time permits.

Bugzilla does not have a "REPORTING IN PROGRESS" flag.

Its not pretty, but forking off PR's have served us so far.

Øyvind
Comment 11 Alain Magloire CLA 2004-11-29 13:47:41 EST
> Just to clarify. The diff is not patch. 
> It is just some tweaks I did in order to prove that GDB recovered from this
> temporary condition.

Understood, but the question remains. Why the scheme
that we have in Thread.getStackFrameCount() does not work for you ?
If the first try failed, we retry a second time and decrement
the stackdepth by one to ignore the corrupt frame.
And according to your own trace, it appears to be working.
So why did you have to add another catch clause ?
Comment 12 Oyvind Harboe CLA 2004-11-30 07:41:42 EST
More info:

- Here is the stack trace  *before* I add a watch expression on p[0]

3 cyg_hal_invoke_constructors() at
c:\cdtworkspace\ecos-repository\ecos\packages\hal\arm\arch\current\src\hal_misc.c:201
2 start() 
1 start() 

- add watch expression on on p[0] 
- step around the application for a bit
- the debug session is frozen as in step3.jpg(i.e. step is unavailable)
- issuing "stepi" in the GDB console enough times enventually brings GDB/CDT
back to a working state again.
Comment 13 Oyvind Harboe CLA 2004-11-30 07:42:23 EST
Created attachment 16229 [details]
Log

The error in the log appeared shortly before CDT reentered a working state
Comment 14 Oyvind Harboe CLA 2004-11-30 07:43:04 EST
Created attachment 16230 [details]
Shows CDT GUI before trouble begins
Comment 15 Oyvind Harboe CLA 2004-11-30 07:44:41 EST
Created attachment 16231 [details]
shows debugger after watch expression has been added

Works as expected
Comment 16 Oyvind Harboe CLA 2004-11-30 07:45:53 EST
Created attachment 16232 [details]
After issuing step a couple of times w/p[0] watch expression

It is no longer possible to step.

stepi/step into the GDB console still works
Comment 17 Oyvind Harboe CLA 2004-11-30 07:47:43 EST
Read this log from the bottom and up. It is untrimmed... :-)


[1,101,818,422,527] (gdb) 
[1,101,818,422,547] 942^done,depth="9"
[1,101,818,422,547] (gdb) 
[1,101,818,423,168] 943 stepi
[1,101,818,423,178] &"stepi\n"
[1,101,818,423,228]
943^done,reason="end-stepping-range",thread-id="0",frame={addr="0x010d1420",func\
="Cyg_CList_T",args=[{name="this",value="0xf9fc"}],file="clist.hxx",line="310"}
[1,101,818,423,228] (gdb) 
[1,101,818,423,228] 944 info threads
[1,101,818,423,238] &"info threads\n"
[1,101,818,423,248] &"warning: RMT ERROR : failed to get remote thread list\n"
[1,101,818,423,248] &"\n"
[1,101,818,423,258] 944^done
[1,101,818,423,258] (gdb) 
[1,101,818,423,258] 945-stack-info-depth
[1,101,818,423,548] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,423,548] 945^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,423,548] (gdb) 
[1,101,818,423,548] 945-stack-info-depth
[1,101,818,423,548] 946-var-update var1
[1,101,818,423,568] 945^done,depth="9"
[1,101,818,423,568] (gdb) 
[1,101,818,423,799] 946^done,changelist={}
[1,101,818,423,799] (gdb) 
[1,101,818,423,799] 947-var-update var2
[1,101,818,424,029] 947^done,changelist={}
[1,101,818,424,029] (gdb) 
[1,101,818,424,029] 948-data-list-changed-registers
[1,101,818,424,039] 948^done,changed-registers=["13","15"]
[1,101,818,424,039] (gdb) 
[1,101,818,424,049] 949-stack-info-depth
[1,101,818,424,159] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,424,159] 949^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,424,159] 949-stack-info-depth
[1,101,818,424,179] (gdb) 
[1,101,818,424,189] 949^done,depth="9"
[1,101,818,424,189] (gdb) 
[1,101,818,424,580] 950 stepi
[1,101,818,424,590] &"stepi\n"
[1,101,818,424,650]
950^done,reason="end-stepping-range",thread-id="0",frame={addr="0x010d1424",func\
="Cyg_CList_T",args=[{name="this",value="0x10d0f90"}],file="clist.hxx",line="310"}
[1,101,818,424,650] (gdb) 
[1,101,818,424,650] 951 info threads
[1,101,818,424,650] &"info threads\n"
[1,101,818,424,650] &"warning: RMT ERROR : failed to get remote thread list\n"
[1,101,818,424,650] &"\n"
[1,101,818,424,660] 951^done
[1,101,818,424,660] (gdb) 
[1,101,818,424,660] 952-stack-info-depth
[1,101,818,424,970] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,424,970] 952^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,424,970] (gdb) 
[1,101,818,424,970] 952-stack-info-depth
[1,101,818,424,970] 953-var-update var1
[1,101,818,424,980] 952^done,depth="9"
[1,101,818,424,980] (gdb) 
[1,101,818,425,231] 953^done,changelist={}
[1,101,818,425,231] (gdb) 
[1,101,818,425,231] 954 stepi
[1,101,818,425,231] 955-var-update var2
[1,101,818,425,241] &"stepi\n"
[1,101,818,425,301]
954^done,reason="end-stepping-range",thread-id="0",frame={addr="0x010d1428",func\
="Cyg_CList_T",args=[{name="this",value="0x10d0f90"}],file="clist.hxx",line="310"}
[1,101,818,425,301] (gdb) 
[1,101,818,425,551] 955^done,changelist={}
[1,101,818,425,551] (gdb) 
[1,101,818,425,551] 956-data-list-changed-registers
[1,101,818,425,561] 956^done,changed-registers=["11","13","15"]
[1,101,818,425,561] (gdb) 
[1,101,818,425,571] 957-stack-info-depth
[1,101,818,425,671] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,425,681] 957^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,425,681] (gdb) 
[1,101,818,425,681] 957-stack-info-depth
[1,101,818,425,701] 957^done,depth="9"
[1,101,818,425,701] (gdb) 
[1,101,818,425,711] 958 stepi
[1,101,818,425,771] &"stepi\n"
[1,101,818,425,841]
958^done,reason="end-stepping-range",thread-id="0",frame={addr="0x010d142c",func\
="Cyg_CList_T",args=[{name="this",value="0xf9fc"}],file="clist.hxx",line="310"}
[1,101,818,425,841] (gdb) 
[1,101,818,425,841] 959 info threads
[1,101,818,425,851] &"info threads\n"
[1,101,818,425,851] &"warning: RMT ERROR : failed to get remote thread list\n"
[1,101,818,425,851] &"\n"
[1,101,818,425,861] 959^done
[1,101,818,425,861] (gdb) 
[1,101,818,425,861] 960-stack-info-depth
[1,101,818,426,152] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,426,152] 960^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,426,152] (gdb) 
[1,101,818,426,152] 960-stack-info-depth
[1,101,818,426,152] 961-var-update var1
[1,101,818,426,162] 960^done,depth="9"
[1,101,818,426,162] (gdb) 
[1,101,818,426,412] 961^done,changelist={}
[1,101,818,426,412] (gdb) 
[1,101,818,426,412] 962-var-update var2
[1,101,818,426,643] 962^done,changelist={}
[1,101,818,426,643] (gdb) 
[1,101,818,426,643] 963-data-list-changed-registers
[1,101,818,426,653] 963^done,changed-registers=["15"]
[1,101,818,426,653] (gdb) 
[1,101,818,426,663] 964-stack-info-depth
[1,101,818,426,773] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,426,773] 964^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,426,773] (gdb) 
[1,101,818,426,773] 964-stack-info-depth
[1,101,818,426,803] 964^done,depth="9"
[1,101,818,426,803] (gdb) 
[1,101,818,431,590] 965-interpreter-exec console stepistepi
[1,101,818,431,590] &"Undefined command: \"stepistepi\".  Try \"help\".\n"
[1,101,818,431,590] 965^error,msg="Undefined command: \"stepistepi\".  Try
\"help\"."
[1,101,818,431,600] (gdb) 
[1,101,818,432,581] 966 stepi
[1,101,818,432,591] &"stepi\n"
[1,101,818,432,661]
966^done,reason="end-stepping-range",thread-id="0",frame={addr="0x010d1430",func\
="Cyg_CList_T",args=[{name="this",value="0xf9fc"}],file="clist.hxx",line="310"}
[1,101,818,432,671] (gdb) 
[1,101,818,432,671] 967 info threads
[1,101,818,432,671] &"info threads\n"
[1,101,818,432,671] &"warning: RMT ERROR : failed to get remote thread list\n"
[1,101,818,432,671] &"\n"
[1,101,818,432,681] 967^done
[1,101,818,432,681] (gdb) 
[1,101,818,432,681] 968-stack-info-depth
[1,101,818,432,972] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,432,972] 968^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,432,972] (gdb) 
[1,101,818,432,972] 968-stack-info-depth
[1,101,818,432,972] 969-var-update var1
[1,101,818,432,982] 968^done,depth="9"
[1,101,818,432,982] (gdb) 
[1,101,818,433,242] 969^done,changelist={}
[1,101,818,433,242] (gdb) 
[1,101,818,433,242] 970-var-update var2
[1,101,818,433,482] 970^done,changelist={}
[1,101,818,433,482] (gdb) 
[1,101,818,433,482] 971-data-list-changed-registers
[1,101,818,433,482] 971^done,changed-registers=["15"]
[1,101,818,433,482] (gdb) 
[1,101,818,433,492] 972-stack-info-depth
[1,101,818,433,603] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,433,603] 972^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,433,603] 972-stack-info-depth
[1,101,818,433,613] (gdb) 
[1,101,818,433,633] 972^done,depth="9"
[1,101,818,433,633] (gdb) 
[1,101,818,433,703] 973 stepi
[1,101,818,433,713] &"stepi\n"
[1,101,818,433,793]
973^done,reason="end-stepping-range",thread-id="0",frame={addr="0x010d1434",func\
="Cyg_CList_T",args=[{name="this",value="0xf9fc"}],file="clist.hxx",line="310"}
[1,101,818,433,793] (gdb) 
[1,101,818,433,793] 974 info threads
[1,101,818,433,803] &"info threads\n"
[1,101,818,433,813] &"warning: RMT ERROR : failed to get remote thread list\n"
[1,101,818,433,813] &"\n"
[1,101,818,433,813] 974^done
[1,101,818,433,813] (gdb) 
[1,101,818,433,813] 975-stack-info-depth
[1,101,818,434,113] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,434,113] 975^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,434,113] (gdb) 
[1,101,818,434,113] 975-stack-info-depth
[1,101,818,434,113] 976-var-update var1
[1,101,818,434,123] 975^done,depth="9"
[1,101,818,434,123] (gdb) 
[1,101,818,434,374] 976^done,changelist={}
[1,101,818,434,374] (gdb) 
[1,101,818,434,374] 977-var-update var2
[1,101,818,434,634] 977^done,changelist={}
[1,101,818,434,634] (gdb) 
[1,101,818,434,634] 978-data-list-changed-registers
[1,101,818,434,634] 978^done,changed-registers=["3","15"]
[1,101,818,434,634] (gdb) 
[1,101,818,434,644] 979-stack-info-depth
[1,101,818,434,754] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,434,754] 979^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,434,754] 979-stack-info-depth
[1,101,818,434,774] (gdb) 
[1,101,818,434,784] 980 stepi
[1,101,818,434,794] 979^done,depth="9"
[1,101,818,434,794] (gdb) 
[1,101,818,434,794] 981 info threads
[1,101,818,434,794] &"stepi\n"
[1,101,818,434,874]
980^done,reason="end-stepping-range",thread-id="0",frame={addr="0x010d1438",func\
="Cyg_CList_T",args=[{name="this",value="0xf9fc"}],file="clist.hxx",line="310"}
[1,101,818,434,874] (gdb) 
[1,101,818,434,874] &"info threads\n"
[1,101,818,434,874] &"warning: RMT ERROR : failed to get remote thread list\n"
[1,101,818,434,874] &"\n"
[1,101,818,434,884] 981^done
[1,101,818,434,884] (gdb) 
[1,101,818,434,884] 982-stack-info-depth
[1,101,818,435,195] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,435,195] 982^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,435,195] (gdb) 
[1,101,818,435,195] 983 stepi
[1,101,818,435,195] 982-stack-info-depth
[1,101,818,435,295] &"stepi\n"
[1,101,818,435,335]
983^done,reason="end-stepping-range",thread-id="0",frame={addr="0x010d0f80",func\
="Cyg_CList",args=[{name="this",value="0xf9fc"}],file="clist.hxx",line="164"}
[1,101,818,435,335] (gdb) 
[1,101,818,435,335] 984 info threads
[1,101,818,435,656] &"Previous frame identical to this frame (corrupt stack?)\n"
[1,101,818,435,656] 982^error,msg="Previous frame identical to this frame
(corrupt stack?)"
[1,101,818,435,656] (gdb) 
[1,101,818,435,666] &"info threads\n"
[1,101,818,435,666] &"warning: RMT ERROR : failed to get remote thread list\n"
[1,101,818,435,666] &"\n"
[1,101,818,435,666] 984^done
[1,101,818,435,666] (gdb) 
[1,101,818,435,666] 985-stack-info-depth
[1,101,818,435,676] 985^done,depth="10"
[1,101,818,435,676] (gdb) 
[1,101,818,435,676] 986-stack-list-frames 0 10
[1,101,818,435,686]
986^done,stack=[frame={level="0",addr="0x010d0f80",func="Cyg_CList",file="clist.\
hxx",line="164"},frame={level="1",addr="0x010d143c",func="Cyg_CList_T",file="clist.hxx",line="310"},\
frame={level="2",addr="0x010d1410",func="Cyg_ThreadQueue_Implementation",file="mlqueue.hxx",line="12\
6"},frame={level="3",addr="0x010d1364",func="Cyg_ThreadQueue",file="/cygdrive/c/cdtworkspace/ecos-re\
pository/ecos/packages/kernel/current/src/sync/cnt_sem.cxx",line="73"},frame={level="4",addr="0x0105\
a73c",func="Cyg_Condition_Variable",file="/cygdrive/c/cdtworkspace/ecos-repository/ecos/packages/ker\
nel/current/src/sync/mutex.cxx",line="540"},frame={level="5",addr="0x010771f0",func="__static_initia\
lization_and_destruction_0",file="/cygdrive/c/cdtworkspace/ecos-repository/ecos/packages/io/fileio/c\
urrent/src/select.cxx",line="100"},frame={level="6",addr="0x01077268",func="_GLOBAL__I.50000_cyg_tim\
eval_to_ticks",file="/cygdrive/c/cdtworkspace/ecos-repository/ecos/packages/io/fileio/current/src/se\
lect.cxx",line="453"},frame={level="7",addr="0x0105332c",func="cyg_hal_invoke_constructors",file="/c\
ygdrive/c/cdtworkspace/ecos-repository/ecos/packages/hal/arm/arch/current/src/hal_misc.c",line="202"\
},frame={level="8",addr="0x01030230",func="start"},frame={level="9",addr="0x01030230",func="start"}]
[1,101,818,435,686] (gdb) 
[1,101,818,435,686] 987-var-update var1
[1,101,818,435,966] 987^done,changelist={}
[1,101,818,435,966] (gdb) 
[1,101,818,435,966] 988-var-update var2
[1,101,818,436,216] 988^done,changelist={}
[1,101,818,436,216] (gdb) 
[1,101,818,436,216] 989-data-list-changed-registers
[1,101,818,436,216] 989^done,changed-registers=["14","15"]
[1,101,818,436,216] (gdb)