BOINC Application Optimization: The Good, the Bad, and the Ugly

Somebody pointed out a thread to me on E@H:
http://einstein.phys.uwm.edu/forum_thread.php?id=4480

I have to say that I’m a little shocked at some of the themes in attitudes of some of the participants I’ve seen.

First let me clear up some misunderstandings about what validators and assimilators for a BOINC server cluster are supposed to do. Validators only check to make sure there is agreement between the machines who have crunched the same workunit. If all of the machines agree on what the numbers are then the results are considered valid and flagged for assimilation. Assimilators just copy the result data from the BOINC database/file system to the projects internal database for analysis. After assimilation a result finally has meaning in the context of the projects goal, prior to that it is a collection of numbers and BOINC doesn’t have a clue if they are correct or not.

Projects are free to add additional logic to their validators and assimilators to try and weed out incorrect results, but to some degree it is still just a guess. If they already know what the correct answer is then they would not have needed to send out the work to begin with.

For projects that are searching for something, their results can be broken down to into two camps, something that needs further investigation and background noise. What separates something that needs further investigation and something that is background noise? There is some value or a set of values in the result files that exceed one or more thresholds. Some thresholds may have a cap on them in which case an interesting value or set of values falls into. We can then refer to the lower and upper bound of a threshold as a threshold window. Those thresholds are typically calibrated against the default client a project sends out. Tests are run against the default client using special workunits that contain various samples of data that expose what the application is looking for so the scientists can make sure the client is working like it is supposed to.

So now the crux of the problem, changing instruction sets for an application can and will change the level of precision of the data returned back to the project.

Optimized SSE/SSE2/SSE3/3DNow applications change how the mathematical operations are performed vs. and un-optimized application. Now whether that adversely affects the project totally depends on how the project handles data types internally. If a project doesn’t release the source code or test workunits for their application then somebody optimizing the application with a disassembler or hex editor is making an assumption about how calculations are being performed and what they can do to optimize it. If they are wrong then something might be flagged as noise when it should have been flagged as needing to be investigated. What if something is missed because the thresholds are geared for a different range of values then what the optimized application is producing?

SSE/SSE2/SSE3/3DNow instruction sets use 128-bit registers while the original x87 FPU uses 80-bit registers. Now most programming languages store floating point numbers as either 32-bit single precision floats or 64-bit double precision floats. Quite a bit of the performance improvement that these new instruction sets provide comes from packing multiple numbers into a register and then performing mathematical operations on them in a matrix style fashion. So you could fit 4 single precision floats, or two double precision floats into a single 128-bit register. Depending on the instruction the result may be bounded to 32-bits, 64-bits, or 128-bits. That means in the worse case scenarios any optimized application is rounding any computation either higher or lower than the original application.

You might be thinking, why don’t projects just enlarge the threshold window so that those small rounding errors can get through. Some of them have, but others still need to investigate how using different instructions affect the system overall. A few of the science applications perform calculations on the result of previous calculations over and over again. How large would the threshold window have to be if the calculations on previous calculations happened 1,000,000 or 10,000,000 times?

Here is an example of two different Intel SSE CPU instructions (one for working on packed data, and the other one using the whole register) on the same processor producing different results:
http://softwareforums.intel.com/ISN/Community/en-US/forums/thread/5484332.aspx

Note, that was using the Intel IPP library. That is how easy rounding problems can be introduced when optimizing.

For those who are quick to say by using optimized applications I’m doing more science because I can process workunits faster, my response is:
Only if the projects backend databases and tools are equipped to deal with the differences, otherwise something might be missed. If you processed the one but sent back numbers outside the target threshold windows have you really helped the project?

Another common thing I’ve seen is; I’ve run the standard application and the optimized application across x number of workunits I’ve been assigned and they produced the same result files so the optimized application must be good in all scenarios, my response is:
What that really means is that no rounding issues occurred with the workunits you had access too. Without the test workunits a project uses internally you really don’t know if you covered all your bases.

The good news in all of this is the projects are listening and are working with the optimizers to incorporate the needed changes into the projects default application. Please be patient during the transition though, it is going to take a bit of time to double check everything and make sure it is all in working order.

In case you are curious, I do not use any optimized clients on any of my machines. To me the science applications are big black boxes, I don’t know enough about what they do under the hood to smartly make changes for the better. I’ll wait for optimization changes to be released by the projects which means that their backend systems can account for any changes to the data.

At the end of the day most of the projects are probably not concerned with the problems of verifying data that has been flagged as interesting, it is concern about missing something interesting that was flagged as background noise.

—– Rom

References:
http://en.wikipedia.org/wiki/IA-32
http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions
http://en.wikipedia.org/wiki/SSE2
http://en.wikipedia.org/wiki/SSE3
http://en.wikipedia.org/wiki/SSE4
http://en.wikipedia.org/wiki/3dnow
http://docs.sun.com/source/806-3568/ncg_goldberg.html

[08/15/2006] Adding a few more reference articles, the banking industry is still battling with rounding errors in its software.
http://www.regdeveloper.co.uk/2006/08/12/floating_point_approximation/
http://cch.loria.fr/documentation/IEEE754/

Upgraded my blogging software


I upgraded my blogging software today.


Hit a few bumps in the road, the new version wanted ASP.NET 2.0 and since it was installed onto the web server in a way that aspnet_isapi.dll wasn’t included in the web server extension list. It took me a while to figure out that it wasn’t registered as a valid extension and that is what was causing the 404 errors.


I also managed to get a hold of a Newsgator plugin for my blogging software so I can post from Outlook now.


In my stumbling around with the blogging software I discovered that my email server hadn’t been doing regular backups since April. Ouch. I have now fixed that issue too.


Hope everyone has fun this 4th of July.

Toshiba Portege M400, Windows Vista, and BOINC

My Toshiba Portege M200 notebook was in need of an upgrade. A couple weeks ago I purchased an Toshiba Portege M400 and it finally arrived on Wednesday.

After burning the recovery DVD’s I set about installing Windows Vista Beta 2 on it. After my second try I finally got things up and running right, I failed in my first attempt since I attempted to install the Toshiba HDD shock protection driver which caused the BSOD. I searched around the blogshere and found out that the Bluetooth drivers were safe to install so I did that. I also had to change the video driver that Vista picked to the ‘Intel Lakeport Graphics Controller’ in order to view Aero Glass.

So I have everything up and running except the built-in IDE RAID controller and the HDD shock protection driver.

The system has a built-in TPM module which is pretty cool and I’m going to go ahead and try to get Bitlocker running on the machine after I make a backup. What is interesting though is that windows detected and installed the fingerprint reader but hasn’t given me an option of associating a fingerprint with a user account out of the box. Even though the machine comes with a finger print reader I think I’m going to stick with my plan of using smart cards. I’m not gutsy enough for an RFID implant and the finger print readers are a little awkward for me. What would be the bomb for me is an iris scanner.

Image001

After a little fiddling around with a manual installation of BOINC it appears to run just fine with Aero Glass. Here is a picture of it.

Image002

I’m going to see if the guys at IBM think it would be a cool idea to make the background image in the Simple GUI translucent. I think that would be neat.

BOINC gains CPU capability detection

Starting in the next version of the BOINC client we’ll be able to detect CPU capabilities.

It is important to note that the capability detection is actually done by the operating system and BOINC just queries the operating system for the supported instruction sets. I bring this up because not all operating systems fully support all additional instruction sets supported by the processor. We are being conservative here to avoid illegal instruction exceptions or privileged instruction exceptions.

For Windows the following instruction sets or capabilities can be detected:

  • fpu
  • tsc
  • pae
  • nx
  • sse
  • sse2
  • sse3
  • 3dnow
  • mmx

On Linux we read the data out of /proc/cpuinfo.

I still need to write the code for the Mac OS.

The processor information will be passed to both the science applications and the scheduling server.

BOINC Simplified GUI Efforts

Simplegui

Well the BOINC Default client is about to get a face lift. David and I have been working with the guys at World Community Grid to come up with a simplier GUI than the one in use today.

The simple GUI will be skinable. We will be releasing a specification for how to construct skins at a later date.

It is our hope that skins can be used by both projects and teams to present a better experience for everybody.

What we have nailed down so far is that the skin file will be XML, and it’ll contain references to BMPs, JPGs, PNGs, and GIFs. The skin file will be stored in a subdirectory called ‘skins’.

Here is an example of what a skined BOINC Manager looks like:

Simplegui

BOINC Windows Runtime Debugger 5.5.0

We are getting close to releasing a new version of the BOINC client software. Not only does the new version contain a bunch of fixes for the client itself, but it also includes new version of the DLLs required by the BOINC Windows Runtime debugger.

It wasn’t always referred to as the BOINC Windows Runtime Debugger; we used to just refer to it as the stackwalker technology. Over the last couple of weeks I’ve made significant changes to the infrastructure on the Windows platform that I feel we can call it something different.

Here is a list of additions that I think will help out:

  • Module list dump including location, file versions, and the type of symbols detected.
  • Register dump for each thread.
  • Stack dumps for each thread.
  • Use of Microsoft’s Symbol Store technology.

Upgrading to the latest version of Microsoft’s debugger technology vastly increased the accuracy of the stack traces on Windows when the correct symbol files can be found. Another huge benefit is the use of the symbol store technology.

Symbol stores are basically websites that contain compressed versions of the symbol files. Now for those who have not been following my previous posts the symbol files are pretty big. R@H for instance had a symbol file that was 30MB uncompressed. Now when a crash occurs the debugger will attempt to go to the symbol stores that are defined in the search path and download the correct symbol file for the application. This is a huge win for a project since the symbol files (PDB) for the application do not need to be included for each workunit. Those who are on dial-up connections will have less to download.

Hopefully we can get the rest of the code written so that projects can maintain there own symbol stores. There are many huge wins with getting this technology enabled within BOINC.

Here is a sample of what the new debugger engine produces:

BOINC Windows Runtime Debugger Version 5.5.0

Dump Timestamp : 04/16/06 23:41:39
Debugger Engine : 4.0.5.0
Symbol Search Path:
C:BOINCSRCMainboinc_sampleswin_buildRelease;
C:BOINCSRCMainboinc_sampleswin_buildRelease;
srv*c:windowssymbols*http://msdl.microsoft.com/download/symbols;
srv*C:DOCUME~1romwLOCALS~1Tempsymbols*http://boinc.berkeley.edu/symstore


ModLoad: 00400000 00060000 C:BOINCSRCMainboinc_sampleswin_buildReleaseuppercase_5.10_windows_intelx86.exe (PDB Symbols Loaded)
ModLoad: 7c800000 000c0000 C:WINDOWSsystem32ntdll.dll (5.2.3790.1830) (PDB Symbols Loaded)
File Version : 5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.1830

ModLoad: 77e40000 00102000 C:WINDOWSsystem32kernel32.dll (5.2.3790.1830) (PDB Symbols Loaded)
File Version : 5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.1830

ModLoad: 5e8d0000 000ce000 C:WINDOWSsystem32OPENGL32.dll (5.2.3790.1830) (PDB Symbols Loaded)
File Version : 5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.1830

ModLoad: 77ba0000 0005a000 C:WINDOWSsystem32msvcrt.dll (7.0.3790.1830) (PDB Symbols Loaded)
File Version : 7.0.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 7.0.3790.1830

ModLoad: 77f50000 0009c000 C:WINDOWSsystem32ADVAPI32.dll (5.2.3790.1830) (PDB Symbols Loaded)
File Version : 5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.1830

ModLoad: 77c50000 0009f000 C:WINDOWSsystem32RPCRT4.dll (5.2.3790.1830) (PDB Symbols Loaded)
File Version : 5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.1830

ModLoad: 77c00000 00048000 C:WINDOWSsystem32GDI32.dll (5.2.3790.2606) (PDB Symbols Loaded)
File Version : 5.2.3790.2606 (srv03_sp1_gdr.051230-1233)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.2606

ModLoad: 77380000 00092000 C:WINDOWSsystem32USER32.dll (5.2.3790.1830) (PDB Symbols Loaded)
File Version : 5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.1830

ModLoad: 68720000 00020000 C:WINDOWSsystem32GLU32.dll (5.2.3790.1830) (PDB Symbols Loaded)
File Version : 5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.1830

ModLoad: 73860000 0004c000 C:WINDOWSsystem32DDRAW.dll (5.3.3790.1830) (PDB Symbols Loaded)
File Version : 5.3.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft(R) Windows(R) Operating System
Product Version: 5.3.3790.1830

ModLoad: 73b30000 00006000 C:WINDOWSsystem32DCIMAN32.dll (5.2.3790.0) (PDB Symbols Loaded)
File Version : 5.2.3790.0 (srv03_rtm.030324-2048)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.0

ModLoad: 76aa0000 0002d000 C:WINDOWSsystem32WINMM.dll (5.2.3790.1830) (PDB Symbols Loaded)
File Version : 5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.1830

ModLoad: 71b70000 00036000 C:WINDOWSsystem32uxtheme.dll (6.0.3790.1830) (PDB Symbols Loaded)
File Version : 6.00.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 6.00.3790.1830

ModLoad: 4b8d0000 00051000 C:WINDOWSsystem32MSCTF.dll (5.2.3790.1830) (PDB Symbols Loaded)
File Version : 5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.1830

ModLoad: 69500000 004f3000 C:WINDOWSsystem32nvoglnt.dll (6.14.10.7801) (-exported- Symbols Loaded)
File Version : 6.14.10.7801
Company Name : NVIDIA Corporation
Product Name : NVIDIA Compatible OpenGL ICD
Product Version: 6.14.10.7801

ModLoad: 02e50000 00006000 C:WINDOWSsystem32ctagent.dll (1.0.0.11) (-exported- Symbols Loaded)
File Version : 1, 0, 0, 11
Company Name : Creative Technology Ltd
Product Name : ctagent
Product Version: 1, 0, 0, 11

ModLoad: 60970000 0000a000 C:WINDOWSsystem32mslbui.dll (5.2.3790.1830) (PDB Symbols Loaded)
File Version : 5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.1830

ModLoad: 03030000 00118000 C:BOINCSRCMainboinc_sampleswin_buildReleasedbghelp.dll (6.5.3.7) (PDB Symbols Loaded)
File Version : 6.5.0003.7 (vbl_core_fbrel(jshay).050527-1915)
Company Name : Microsoft Corporation
Product Name : Debugging Tools for Windows(R)
Product Version: 6.5.0003.7

ModLoad: 03250000 00046000 C:BOINCSRCMainboinc_sampleswin_buildReleasesymsrv.dll (6.5.3.8) (PDB Symbols Loaded)
File Version : 6.5.0003.8 (vbl_core_fbrel(jshay).050527-1915)
Company Name : Microsoft Corporation
Product Name : Debugging Tools for Windows(R)
Product Version: 6.5.0003.8

ModLoad: 032a0000 00031000 C:BOINCSRCMainboinc_sampleswin_buildReleasesrcsrv.dll (6.5.3.7) (PDB Symbols Loaded)
File Version : 6.5.0003.7 (vbl_core_fbrel(jshay).050527-1915)
Company Name : Microsoft Corporation
Product Name : Debugging Tools for Windows(R)
Product Version: 6.5.0003.7

ModLoad: 77b90000 00008000 C:WINDOWSsystem32version.dll (5.2.3790.1830) (PDB Symbols Loaded)
File Version : 5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
Company Name : Microsoft Corporation
Product Name : Microsoft® Windows® Operating System
Product Version: 5.2.3790.1830

*** UNHANDLED EXCEPTION ****
Reason: Breakpoint Encountered (0x80000003) at address 0x7C822583

*** 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:boincsrcmainboinc_samplesuppercaseupper_case.c:174)
00a1ffb8 77e66063 00000000 00000000 00000000 00000000 uppercase_5.10_windows_intelx86!foobar+0x0 (c:boincsrcmainboincapigraphics_impl.c:75) FPO: [1,0,0]
00a1ffec 00000000 004239c0 00000000 00000000 00000000 kernel32!_BaseThreadStart@8+0x0 (c:boincsrcmainboincapigraphics_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:boincsrcmainboincapiwindows_opengl.c:571) FPO: [0,46,0]
0012fcd0 004220eb 00401078 0045c3b0 0040233c 00401078 uppercase_5.10_windows_intelx86!boinc_init_graphics_impl+0x30 (c:boincsrcmainboincapigraphics_impl.c:84) FPO: [2,7,0]
0012fcdc 0040233c 00401078 00454f00 004483a4 00000002 uppercase_5.10_windows_intelx86!boinc_init_graphics+0x4b (c:boincsrcmainboincapigraphics_api.c:45) FPO: [1,0,0]
0012fcf4 004023b1 00000002 0012fd0c 00142550 0012fd0c uppercase_5.10_windows_intelx86!main+0xa (c:boincsrcmainboinc_samplesuppercaseupper_case.c:233) FPO: [2,0,0]
0012fe98 004035b4 00400000 00000000 001425a7 00000001 uppercase_5.10_windows_intelx86!WinMain+0x0 (c:boincsrcmainboinc_samplesuppercaseupper_case.c:110) FPO: [4,100,0]
0012ffc0 77e523cd 00000000 00000000 7ffd9000 8707adb0 uppercase_5.10_windows_intelx86!WinMainCRTStartup+0x1d (f:vs70builds3077vccrtbldcrtsrccrt0.c:251)
0012fff0 00000000 00403430 00000000 78746341 00000020 kernel32!_BaseProcessStart@4+0x0 (f:vs70builds3077vccrtbldcrtsrccrt0.c:251)

Exiting…

Rosetta@Home Progress Report

Howdy Folks,

Well error rates are still dropping on R@H. It generally takes a few weeks for the old version of an application to filter out of the system.

Here was the pass percentage breakout from yesterday:


Version


OS


Total Results


Pass Rate


Fail Rate


483


Darwin


6733


90.24


9.76


483


Windows


99095


95.74


4.26


482


Darwin


213


96.71


3.29


482


Linux


9387


96.48


3.52


482


Windows


6000


84.68


15.32

As you can see there was a 10% drop in failure rate for windows.

Here is what the current error type breakout looks like:


App Version


OS


Exit Status


Error Count


483


Darwin


-197 (0xffffff3b) ERR_ABORTED_VIA_GUI


4


483


Darwin


-186 (0xffffff46) ERR_RESULT_DOWNLOAD


14


483


Darwin


-185 (0xffffff47) ERR_RESULT_START


290


483


Darwin


1 Unknown error number


11


483


Darwin


2 Unknown error number


77


483


Darwin


4 Unknown error number


223


483


Darwin


5 Unknown error number


17


483


Darwin


131 (0x83) Unknown error number


21


483


Windows


-2147483645 (0x80000003) Unknown error number


29


483


Windows


-2147483641 (0x80000007) Unknown error number


1


483


Windows


-1073741819 (0xc0000005) Unknown error number


672


483


Windows


-1073741818 (0xc0000006) Unknown error number


5


483


Windows


-1073741811 (0xc000000d) Unknown error number


935


483


Windows


-1073741795 (0xc000001d) Unknown error number


5


483


Windows


-1073741794 (0xc000001e) Unknown error number


1


483


Windows


-1073741783 (0xc0000029) Unknown error number


1


483


Windows


-1073741675 (0xc0000095) Unknown error number


1


483


Windows


-1073741674 (0xc0000096) Unknown error number


1


483


Windows


-1073741515 (0xc0000135) Unknown error number


143


483


Windows


-1073741502 (0xc0000142) Unknown error number


285


483


Windows


-1073740972 (0xc0000354) Unknown error number


3


483


Windows


-1073740791 (0xc0000409) Unknown error number


16


483


Windows


-529697949 (0xe06d7363) Unknown error number


102


483


Windows


-197 (0xffffff3b) ERR_ABORTED_VIA_GUI


154


483


Windows


-187 (0xffffff45) ERR_RESULT_UPLOAD


4


483


Windows


-186 (0xffffff46) ERR_RESULT_DOWNLOAD


598


483


Windows


-185 (0xffffff47) ERR_RESULT_START


210


483


Windows


-177 (0xffffff4f) ERR_RSC_LIMIT_EXCEEDED


1


483


Windows


-164 (0xffffff5c) ERR_NESTED_UNHANDLED_EXCEPTION_DETECTED


39


483


Windows


-1 (0xffffffff) Unknown error number


74


483


Windows


0


6


483


Windows


1 Unknown error number


806


483


Windows


3 Unknown error number


15


483


Windows


128 (0x80) Unknown error number


79


483


Windows


1073741845 (0x40000015) Unknown error number


1


483


Windows


1073807364 (0x40010004) Unknown error number


32


482


Darwin


-197 (0xffffff3b) ERR_ABORTED_VIA_GUI


2


482


Darwin


-185 (0xffffff47) ERR_RESULT_START


3


482


Darwin


1 Unknown error number


1


482


Darwin


131 (0x83) Unknown error number


1


482


Linux


-197 (0xffffff3b) ERR_ABORTED_VIA_GUI


16


482


Linux


-186 (0xffffff46) ERR_RESULT_DOWNLOAD


46


482


Linux


-185 (0xffffff47) ERR_RESULT_START


1


482


Linux


1 Unknown error number


22


482


Linux


2 Unknown error number


25


482


Linux


4 Unknown error number


1


482


Linux


7 Unknown error number


1


482


Linux


11 (0xb) Unknown error number


29


482


Linux


13 (0xd) Unknown error number


33


482


Linux


26 (0x1a) Unknown error number


1


482


Linux


131 (0x83) Unknown error number


154


482


Linux


139 (0x8b) Unknown error number


1


482


Windows


-1073741819 (0xc0000005) Unknown error number


98


482


Windows


-1073741811 (0xc000000d) Unknown error number


30


482


Windows


-1073741502 (0xc0000142) Unknown error number


7


482


Windows


-529697949 (0xe06d7363) Unknown error number


7


482


Windows


-197 (0xffffff3b) ERR_ABORTED_VIA_GUI


561


482


Windows


-187 (0xffffff45) ERR_RESULT_UPLOAD


9


482


Windows


-186 (0xffffff46) ERR_RESULT_DOWNLOAD


26


482


Windows


-185 (0xffffff47) ERR_RESULT_START


4


482


Windows


-177 (0xffffff4f) ERR_RSC_LIMIT_EXCEEDED


4


482


Windows


-164 (0xffffff5c) ERR_NESTED_UNHANDLED_EXCEPTION_DETECTED


115


482


Windows


1 Unknown error number


57


481


Linux


-186 (0xffffff46) ERR_RESULT_DOWNLOAD


1


481


Linux


1 Unknown error number


2


481


Linux


11 (0xb) Unknown error number


2


481


Linux


131 (0x83) Unknown error number


4


479


Linux


1 Unknown error number


1

This weekend I’m going to try and get a register dump of each thread added to the diagnostic output. Along with that I would like to get the function pointers and function parameters added to the diagnostic output.

I did manage to shrink the PDB file size for R@H down to 7MB which still seems to be a little steep for mass consumption. So maybe with the function pointers and parameters we can continue to bring down the error rates.

—– Rom