*** empty log message ***

svn path=/trunk/boinc/; revision=10226
This commit is contained in:
David Anderson 2006-05-31 17:19:29 +00:00
parent cf4c89d757
commit 210e22e537
5 changed files with 195 additions and 68 deletions

View File

@ -5240,3 +5240,20 @@ Rom 29 May 2006
lib/
diagnostics_win.C
David 31 May 2006
- database code: the following functions
DB_VALIDATOR_ITEM_SET::enumerate()
DB_WORK_ITEM::enumerate()
were using a left join on (workunit, result) or (result, workunit),
then parsing the result in a way that would crash
if only one item was present
(e.g. if there's a WU without corresponding result, or vice-versa).
Solution: replaced "left join" with a "natural join", i.e.
select ... from workunit, result where ...
db/
boinc_db.C
sched/
sched_config.C

View File

@ -119,11 +119,11 @@ void DB_PLATFORM::db_print(char* buf){
void DB_PLATFORM::db_parse(MYSQL_ROW &r) {
int i=0;
clear();
id=atol(r[i++]);
create_time=atol(r[i++]);
id = atoi(r[i++]);
create_time = atoi(r[i++]);
strcpy2(name, r[i++]);
strcpy2(user_friendly_name, r[i++]);
deprecated=atol(r[i++]);
deprecated = atoi(r[i++]);
}
void DB_APP::db_print(char* buf){
@ -138,7 +138,7 @@ void DB_APP::db_print(char* buf){
void DB_APP::db_parse(MYSQL_ROW &r) {
int i=0;
clear();
id=atol(r[i++]);
id = atoi(r[i++]);
create_time = atoi(r[i++]);
strcpy2(name, r[i++]);
min_version = atoi(r[i++]);
@ -161,7 +161,7 @@ void DB_APP_VERSION::db_print(char* buf){
void DB_APP_VERSION::db_parse(MYSQL_ROW &r) {
int i=0;
clear();
id=atol(r[i++]);
id = atoi(r[i++]);
create_time = atoi(r[i++]);
appid = atoi(r[i++]);
version_num = atoi(r[i++]);
@ -382,7 +382,7 @@ void DB_HOST::db_print(char* buf){
void DB_HOST::db_parse(MYSQL_ROW &r) {
int i=0;
clear();
id=atol(r[i++]);
id = atoi(r[i++]);
create_time = atoi(r[i++]);
userid = atoi(r[i++]);
rpc_seqno = atoi(r[i++]);
@ -646,7 +646,7 @@ void DB_WORKUNIT::db_print(char* buf){
void DB_WORKUNIT::db_parse(MYSQL_ROW &r) {
int i=0;
clear();
id=atol(r[i++]);
id = atoi(r[i++]);
create_time = atoi(r[i++]);
appid = atoi(r[i++]);
strcpy2(name, r[i++]);
@ -758,7 +758,7 @@ int DB_RESULT::mark_as_sent(int old_server_state) {
void DB_RESULT::db_parse(MYSQL_ROW &r) {
int i=0;
clear();
id=atol(r[i++]);
id = atoi(r[i++]);
create_time = atoi(r[i++]);
workunitid = atoi(r[i++]);
server_state = atoi(r[i++]);
@ -807,9 +807,9 @@ void DB_MSG_FROM_HOST::db_print(char* buf) {
void DB_MSG_FROM_HOST::db_parse(MYSQL_ROW& r) {
int i=0;
clear();
id = atol(r[i++]);
create_time = atol(r[i++]);
hostid = atol(r[i++]);
id = atoi(r[i++]);
create_time = atoi(r[i++]);
hostid = atoi(r[i++]);
strcpy2(variety, r[i++]);
handled = atoi(r[i++]);
strcpy2(xml, r[i++]);
@ -831,11 +831,11 @@ void DB_MSG_TO_HOST::db_print(char* buf) {
void DB_MSG_TO_HOST::db_parse(MYSQL_ROW& r) {
int i=0;
clear();
id = atol(r[i++]);
create_time = atol(r[i++]);
hostid = atol(r[i++]);
id = atoi(r[i++]);
create_time = atoi(r[i++]);
hostid = atoi(r[i++]);
strcpy2(variety, r[i++]);
handled = atol(r[i++]);
handled = atoi(r[i++]);
strcpy2(xml, r[i++]);
}
@ -1128,10 +1128,8 @@ int DB_VALIDATOR_ITEM_SET::enumerate(
" res.sent_time, "
" res.received_time "
"FROM "
" workunit AS wu "
" LEFT JOIN result AS res ON wu.id = res.workunitid "
"WHERE "
" wu.appid = %d and wu.need_validate > 0 %s "
" workunit AS wu, result AS res where wu.id = res.workunitid "
" and wu.appid = %d and wu.need_validate > 0 %s "
"LIMIT "
" %d ",
priority, appid, mod_clause, nresult_limit
@ -1227,7 +1225,7 @@ void WORK_ITEM::parse(MYSQL_ROW& r) {
int i=0;
memset(this, 0, sizeof(WORK_ITEM));
res_id = atoi(r[i++]);
wu.id=atol(r[i++]);
wu.id = atoi(r[i++]);
wu.create_time = atoi(r[i++]);
wu.appid = atoi(r[i++]);
strcpy2(wu.name, r[i++]);
@ -1263,9 +1261,9 @@ int DB_WORK_ITEM::enumerate(
MYSQL_ROW row;
if (!cursor.active) {
sprintf(query,
"select high_priority result.id, workunit.* from result left join workunit "
"on workunit.id = result.workunitid "
"where result.server_state=%d "
"select high_priority result.id, workunit.* from result, workunit "
"where workunit.id = result.workunitid "
"and result.server_state=%d "
" %s "
" %s "
"limit %d",
@ -1280,7 +1278,9 @@ int DB_WORK_ITEM::enumerate(
if (!cursor.rp) return mysql_errno(db->mysql);
cursor.active = true;
}
again:
row = mysql_fetch_row(cursor.rp);
if (!row) {
mysql_free_result(cursor.rp);
cursor.active = false;

View File

@ -2,9 +2,32 @@
require_once("docutil.php");
page_head("Application debugging on Windows");
echo "
<h3>Anatomy of a Windows stack trace</h3>
<h3>Contents</h3>
<ul>
<li><a href=\"#Anatomy of a Windows stack trace\">Anatomy of a Windows stack trace</a>
<ul>
<li><a href=\"#Introduction\">Introduction</a>
<li><a href=\"#Debugger version\">Debugger version</a>
<li><a href=\"#Module List\">Module List</a>
<li><a href=\"#Process Information\">Process Information</a>
<li><a href=\"#Thread Information\">Thread Information</a>
<ul>
<li><a href=\"#General Information\">General Information</a>
<li><a href=\"#Unhandled Exception Record\">Unhandled Exception Record</a>
<li><a href=\"#Registers\">Registers</a>
<li><a href=\"#Callstack\">Callstack</a>
</ul>
<li><a href=\"#Debug Message Dump\">Debug Message Dump</a>
<li><a href=\"#Foreground Window Data\">Foreground Window Data</a>
</ul>
<li><a href=\"Common Issues\">Common Issues</a>
</ul>
<h4>Debugger version</h4>
<h3><a name=\"Anatomy of a Windows stack trace\">Anatomy of a Windows stack trace</a></h3>
<h4><a name=\"Introduction\">Introduction</a></h4>
<h4><a name=\"Debugger version\">Debugger version</a></h4>
<table width=100%>
<tr>
@ -32,7 +55,11 @@ find the symbol files related to the modules loaded in memory. Entries prefixed
'srv*' are used to denote a web based symbol store. DbgHelp will use them if
symsrv can be loaded at the time of the crash.
<p>
<h4>Module List</h4>
If you see a load library failure for either dbghelp.dll or symsrv.dll then there
is a pretty good chance that most of the data in the dump will be useless.
<p>
<h4><a name=\"Module List\">Module List</a></h4>
<table width=100%>
<tr>
@ -56,68 +83,137 @@ was loaded, the second hexdecimal is the size of the module.
If a version record was found inside the module, it'll be dumped out as part of the
module list dump.
<p>
<h4>Exception Record</h4>
<h4><a name=\"Process Information\">Process Information</a></h4>
<table width=100%>
<tr>
<td bgcolor=ddddff width=100%>
<pre>
*** Dump of the Process Statistics: ***
- I/O Operations Counters -
Read: 24, Write: 0, Other 206
- I/O Transfers Counters -
Read: 0, Write: 358, Other 0
- Paged Pool Usage -
QuotaPagedPoolUsage: 29116, QuotaPeakPagedPoolUsage: 29228
QuotaNonPagedPoolUsage: 6624, QuotaPeakNonPagedPoolUsage: 6640
- Virtual Memory Usage -
VirtualSize: 64102400, PeakVirtualSize: 71045120
- Pagefile Usage -
PagefileUsage: 26218496, PeakPagefileUsage: 33697792
- Working Set Size -
WorkingSetSize: 19210240, PeakWorkingSetSize: 26361856, PageFaultCount: 6729
</pre>
</td>
</tr>
</table>
<h4><a name=\"Thread Information\">Thread Information</a></h4>
<table width=100%>
<tr>
<td bgcolor=ddddff width=100%>
<pre>
*** UNHANDLED EXCEPTION ****
*** Dump of the Worker thread (a4): ***
</pre>
</td>
</tr>
</table>
<h5><a name=\"General Information\">General Information</a></h5>
<table width=100%>
<tr>
<td bgcolor=ddddff width=100%>
<pre>
- Information -
Status: Waiting, Wait Reason: UserRequest, Kernel Time: 0.000000, User Time: 0.000000, Wait Time: 38241696.000000
</pre>
</td>
</tr>
</table>
<h5><a name=\"Unhandled Exception Record\">Unhandled Exception Record</a></h5>
<table width=100%>
<tr>
<td bgcolor=ddddff width=100%>
<pre>
- Unhandled Exception Record -
Reason: Breakpoint Encountered (0x80000003) at address 0x7C822583
</pre>
</td>
</tr>
</table>
<p>
<h4>Stack traces</h4>
<h5><a name=\"Registers\">Registers</a></h5>
<table width=100%>
<tr>
<td bgcolor=ddddff width=100%>
<pre>
*** Dump of the Worker(offending) thread: ***
eax=00000000 ebx=00000000 ecx=77e4245b edx=7c82ed54 esi=77e424a8 edi=00454f20
eip=7c822583 esp=00a1fd64 ebp=00a1ffb4
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ChildEBP RetAddr Args to Child
00a1fd60 0040203b 00000000 00000000 00000000 00000001 ntdll!_DbgBreakPoint@0+0x0 FPO: [0,0,0]
00a1ffb4 004239ce 77e66063 00000000 00000000 00000000 uppercase_5.10_windows_intelx86!worker+0x0 (c:\boincsrc\main\boinc_samples\uppercase\upper_case.c:174)
00a1ffb8 77e66063 00000000 00000000 00000000 00000000 uppercase_5.10_windows_intelx86!foobar+0x0 (c:\boincsrc\main\boinc\api\graphics_impl.c:75) FPO: [1,0,0]
00a1ffec 00000000 004239c0 00000000 00000000 00000000 kernel32!_BaseThreadStart@8+0x0 (c:\boincsrc\main\boinc\api\graphics_impl.c:75)
*** Dump of the Timer thread: ***
eax=0002625a ebx=00000000 ecx=00000000 edx=00b1feb0 esi=00000001 edi=00000000
eip=7c82ed54 esp=00b1ff0c ebp=00b1ffb8
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ChildEBP RetAddr Args to Child
00b1ff08 7c822114 76aba0d3 00000002 00b1ff70 00000001 ntdll!_KiFastSystemCallRet@0+0x0 FPO: [0,0,0]
00b1ff0c 76aba0d3 00000002 00b1ff70 00000001 00000001 ntdll!_NtWaitForMultipleObjects@20+0x0 FPO: [5,0,0]
00b1ffb8 77e66063 00000000 00000000 00000000 00000000 WINMM!_timeThread@4+0x0
00b1ffec 00000000 76aba099 00000000 00000000 49474542 kernel32!_BaseThreadStart@8+0x0
*** Dump of the Graphics thread: ***
eax=00000000 ebx=7738e3f7 ecx=00000000 edx=00000000 esi=0012fc00 edi=7739ca9d
eip=7c82ed54 esp=0012fbb4 ebp=0012fbd8
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ChildEBP RetAddr Args to Child
0012fbb0 7739c78d 77392f3a 0012fc00 00000000 00000000 ntdll!_KiFastSystemCallRet@0+0x0 FPO: [0,0,0]
0012fbd8 00424c3f 0012fc00 00000000 00000000 00000000 USER32!_NtUserGetMessage@16+0x0
0012fcb0 00423ca3 00000001 00000001 00000001 00000001 uppercase_5.10_windows_intelx86!win_graphics_event_loop+0x14 (c:\boincsrc\main\boinc\api\windows_opengl.c:571) FPO: [0,46,0]
0012fcd0 004220eb 00401078 0045c3b0 0040233c 00401078 uppercase_5.10_windows_intelx86!boinc_init_graphics_impl+0x30 (c:\boincsrc\main\boinc\api\graphics_impl.c:84) FPO: [2,7,0]
0012fcdc 0040233c 00401078 00454f00 004483a4 00000002 uppercase_5.10_windows_intelx86!boinc_init_graphics+0x4b (c:\boincsrc\main\boinc\api\graphics_api.c:45) FPO: [1,0,0]
0012fcf4 004023b1 00000002 0012fd0c 00142550 0012fd0c uppercase_5.10_windows_intelx86!main+0xa (c:\boincsrc\main\boinc_samples\uppercase\upper_case.c:233) FPO: [2,0,0]
0012fe98 004035b4 00400000 00000000 001425a7 00000001 uppercase_5.10_windows_intelx86!WinMain+0x0 (c:\boincsrc\main\boinc_samples\uppercase\upper_case.c:110) FPO: [4,100,0]
0012ffc0 77e523cd 00000000 00000000 7ffd9000 8707adb0 uppercase_5.10_windows_intelx86!WinMainCRTStartup+0x1d (f:\vs70builds\3077\vc\crtbld\crt\src\crt0.c:251)
0012fff0 00000000 00403430 00000000 78746341 00000020 kernel32!_BaseProcessStart@4+0x0 (f:\vs70builds\3077\vc\crtbld\crt\src\crt0.c:251)
- Registers -
eax=00000000 ebx=00000000 ecx=77e4245b edx=7c82ed54 esi=77e88bfe edi=00459f40
eip=7c822583 esp=00aafd64 ebp=00aaffb4
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
</pre>
</td>
</tr>
</table>
<h5><a name=\"Callstack\">Callstack</a></h5>
<table width=100%>
<tr>
<td bgcolor=ddddff width=100%>
<pre>
- Callstack -
ChildEBP RetAddr Args to Child
00aafd60 00402221 00000000 00000000 00000000 00000001 ntdll!_DbgBreakPoint@0+0x0 FPO: [0,0,0]
00aaffb4 0042684e 77e66063 00000000 00000000 00000000 uppercase_5.10_windows_intelx86!worker+0x0 (c:\boincsrc\main\boinc_samples\uppercase\upper_case.c:181)
00aaffb8 77e66063 00000000 00000000 00000000 00000000 uppercase_5.10_windows_intelx86!foobar+0x0 (c:\boincsrc\main\boinc\api\graphics_impl.c:75) FPO: [1,0,0]
00aaffec 00000000 00426840 00000000 00000000 00000000 kernel32!_BaseThreadStart@8+0x0 (c:\boincsrc\main\boinc\api\graphics_impl.c:75)
</pre>
</td>
</tr>
</table>
<h4><a name=\"Debug Message Dump\">Debug Message Dump</a></h4>
<table width=100%>
<tr>
<td bgcolor=ddddff width=100%>
<pre>
*** Debug Message Dump ****
</pre>
</td>
</tr>
</table>
<h4><a name=\"Foreground Window Data\">Foreground Window Data</a></h4>
<table width=100%>
<tr>
<td bgcolor=ddddff width=100%>
<pre>
*** Foreground Window Data ***
Window Name :
Window Class :
Window Process ID: 16f8
Window Thread ID : ae8
</pre>
</td>
</tr>
</table>
<h3><a name=\"Common Issues\">Common Issues</a></h3>
";
page_tail();

View File

@ -1,6 +1,19 @@
<?
$project_news = array(
array("May 31, 2006",
"Recent newspaper articles on BOINC and Rosetta@home:
<a href=http://seattletimes.nwsource.com/html/localnews/2003027071_computersider30m.html>Worldwide, 690,000 help computer effort</a> and
<a href=http://seattlepi.nwsource.com/local/6420AP_WA_Research_at_Home.html>Medical researcher taps the power of home computing</a>."
),
array("May 30, 2006",
"The <a href=http://bam.boincstats.com>BOINCStats Account Manager</a>
(BAM!) is now available for use.
BAM! provides 'one-stop shopping' for finding
and attaching to BOINC project;
see the news item of May 11.
Thanks to Willy de Zutter for developing BAM!."
),
array("May 25, 2006",
"BOINC has added preliminary support for 'low-latency' computing;
e.g. delay bounds of minutes rather than days.

View File

@ -112,6 +112,7 @@ int SCHED_CONFIG::parse(FILE* f) {
else if (!strcmp(tag, "output_level")) continue;
else if (!strcmp(tag, "profile_screening")) continue;
else if (!strcmp(tag, "min_passwd_length")) continue;
else if (!strcmp(tag, "disable_account_creation")) continue;
else fprintf(stderr, "unknown tag: %s\n", tag);
}
return ERR_XML_PARSE;