Recommended Posts

The article you linked says you have approximately the same amount of handle limits for a process (i.e. per application) whether 32bit or 64bit Windows. Why would a game ever be allocating 16 million event handles anyway  :huh: (or many Windows Event handles at all for that matter)? The article itself even says that you would exhaust your physical resource limits before you reached the handle limit anyway (in the same way as GDI handle leaks do).

I know.  The question remains whether an OS/app can actually use all that with stability.  The article I can't find (perhaps it was removed, perhaps it isn't relevant anymore with Windows 7 and 8, who knows) IIRC implied that there was a point things would become unstable whether it was at the limit or not.

 

Since I can't find it...that's that.

I know.  The question remains whether an OS/app can actually use all that with stability.  The article I can't find (perhaps it was removed, perhaps it isn't relevant anymore with Windows 7 and 8, who knows) IIRC implied that there was a point things would become unstable whether it was at the limit or not.

 

Since I can't find it...that's that.

 

I think the article you are referring to probably says the following: an application can't use the maximum amount of handles with stability under normal circumstances because it would cause the system to physically run out of memory; so you reach an out of memory state and can't recover gracefully. So, yes there is a point where things become unstable before reaching the handle limits -- the limit of physical resources.

I think the article you are referring to probably says the following: an application can't use the maximum amount of handles with stability under normal circumstances because it would cause the system to physically run out of memory; so you reach an out of memory state and can't recover gracefully.

No, it doesn't.

 

I am aware my information isn't defendable without the source text.

No, it doesn't.

 

You implied that you weren't sure what it said and now you are suddenly sure what it doesn't says  :laugh: I was giving you a logical basis for what it definitely could refer to based on what you said you thought it said. It wouldn't surprise me one bit if it actually did, given that the article you did link and articles I have found do say that

You implied that you weren't sure what it said and now you are suddenly sure what it doesn't says  :laugh:

I am not sure what it said with 100% certainty, as I don't have it in front of me.

 

I am sure what it didn't say.

 

Not quite the same thing.

  • Like 1

I am not sure what it said with 100% certainty, as I don't have it in front of me.

 

I am sure what it didn't say.

 

Not quite the same thing.

 

True that. This is off topic but that reminded me of this funny clip: http://www.youtube.com/watch?v=_w5JqQLqqTc. Love that show :-)

People still use XP  :pinch:

Heh, if only it was that easy. In a perfect world an application could use pure Direct2D/Direct3D for their UI, but there's no comparable common controls/themeing API for it, everything still relies on GDI (Wouldn't it be nice if uxtheme could draw directly to a D2D RT? Or having common controls that integrated into a UI scene graph, etc.)

Microsoft have been of the whole "2 minds" thing for a while, some of their teams love .NET/XAML/etc. (Server guys, Tablet guys), others love stuff like Direct2D (Office, IE), while the shell guys still seem to be stuck in GDI land, there's barely integration between all the different environments. So now we have a situation where we have Vista/7/8/8.1 all having hardware accelerated 2D/3D drawing libraries as the standard, and the desktop environment is stuck using APIs written for Windows 3 and anybody wanting to use the new APIs has to write everything themselves (Like Firefox drawing theme elements to GDI surfaces and uploading them to the GPU for rendering, instead of having them implemented as shaders on the GPU, etc.).

  • Like 1

Heh, if only it was that easy. In a perfect world an application could use pure Direct2D/Direct3D for their UI, but there's no comparable common controls/themeing API for it, everything still relies on GDI (Wouldn't it be nice if uxtheme could draw directly to a D2D RT? Or having common controls that integrated into a UI scene graph, etc.)

Microsoft have been of the whole "2 minds" thing for a while, some of their teams love .NET/XAML/etc. (Server guys, Tablet guys), others love stuff like Direct2D (Office, IE), while the shell guys still seem to be stuck in GDI land, there's barely integration between all the different environments. So now we have a situation where we have Vista/7/8/8.1 all having hardware accelerated 2D/3D drawing libraries as the standard, and the desktop environment is stuck using APIs written for Windows 3 and anybody wanting to use the new APIs has to write everything themselves (Like Firefox drawing theme elements to GDI surfaces and uploading them to the GPU for rendering, instead of having them implemented as shaders on the GPU, etc.).

 

Kinda OT, but if you know this, why doesn't any senior or executive management and Microsoft know it and see that it gets rectified?

Kinda OT, but if you know this, why doesn't any senior or executive management and Microsoft know it and see that it gets rectified?

WinRT actually does change things, just not sure what it does for the desktop environment (I'm told you can use it for desktop apps, but I don't know much about that.)

 

Course, it's still only for the new OSes so unlikely to be picked up by too many apps.

Heh, if only it was that easy. In a perfect world an application could use pure Direct2D/Direct3D for their UI, but there's no comparable common controls/themeing API for it, everything still relies on GDI (Wouldn't it be nice if uxtheme could draw directly to a D2D RT? Or having common controls that integrated into a UI scene graph, etc.)

Microsoft have been of the whole "2 minds" thing for a while, some of their teams love .NET/XAML/etc. (Server guys, Tablet guys), others love stuff like Direct2D (Office, IE), while the shell guys still seem to be stuck in GDI land, there's barely integration between all the different environments. So now we have a situation where we have Vista/7/8/8.1 all having hardware accelerated 2D/3D drawing libraries as the standard, and the desktop environment is stuck using APIs written for Windows 3 and anybody wanting to use the new APIs has to write everything themselves (Like Firefox drawing theme elements to GDI surfaces and uploading them to the GPU for rendering, instead of having them implemented as shaders on the GPU, etc.).

WPF was supposed to be the answer to that; it was this entirely Direct3D-based GUI toolkit that should have replaced WinForms/MFC/ATL, but Microsoft has failed to evolve it. WPF should currently use DirectComposition/Direct2D/D3D11, but it's stuck in the past with a terribly slow Direct3D9 implementation. WPF is the bastard child of the WinFX debacle and was too little, too late.

Problem with WPF was that it's based on managed code, which the shell team hates (Based on what I've heard). And Longhorn in it's original incarnation was a huge failure (I remember playing around with the early builds, they had better .NET integration than we do currently)

As an example, Direct2D and DirectWrite, they're based (Even if it's the design only) off the WPF counterparts (DirectWrite being an even better font render than WPF uses), but there's just no integration into the existing unmanaged APIs. The best you can do is make a "GDI Compatible" render target that lets you draw GDI resources to a Direct2D RT and then upload it to the GPU (Which is exactly what Firefox does, etc.), but there's no support for native rendering of theme elements to D2D (Ideally you'd want a vector version of the theme that can be drawn on the GPU, which is exactly what WPF did, but there's no counterpart for unmanaged apps), and there's no native D2D rendered controls. If you wanted a native interface drawn with D2D you'd either have to superclass the common controls to force them to render into a GDI/D2D RT, or recreate every single element, which is great for compatibility.

I would love to see more work put into WPF (Like basing it on D2D/D3D11 as you said), but it seems to have fallen by the roadside in favour of WinRT, but that's limited currently to Metro apps, which goes back into my argument of Microsoft not knowing what to focus on.

Also, how'd we get from a game to this subject?

Edit: Also, problem with Microsoft is that they often have internal "not invented here", teams work against each other, rather than with each other.

Edit: Also, problem with Microsoft is that they often have internal "not invented here", teams work against each other, rather than with each other.

 

Excellent. That I understand. That is a management problem, not a programmer problem. The question is, does anyone in management know this problem exists? And do they have the backbone and authority to deal with it?

Can you back your claim of stability/robustness advantages up with some citations and specifics? As far as I know, there is nothing in the x64 portions of the ISA that would yield advantages in these areas. The only effective differences in the modes from a practical standpoint is that you have larger/more registers, can address more memory, and you have some additional x86_64 specific instructions.

 

Unless you are talking about security advantages in terms of ASLR, I don't see any inherent reason why 64-bit OSes would be at a stability advantage. I've honestly never heard of anyone suggesting that x64 OSes are inherently more stable before.

 

I refer to stability in terms of fewer crashes, not necessarily less vulnerable to outside forces - oddly enough, the primary reason FOR that increased stability is what you just stated - better memory management.  Browsers and productivity applications are even better examples than operating systems - the biggest driver behind moving who I support - and myself - to x64 was fewer crashes in web browsing and productivity applications (such as Office) -  not gaming.

However, there's an advantage in terms of security that is unique to x64 - and it's a CPU hardware feature that operating systems can leverage.  Had we forgotten about NX (No eXecute)? NX is old; it's also pretty much ubiquitous; while Intel played it up with their first x64 CPUs, AMD supports NX as well (Opteron and all of its progeny, including AMD's Fusion APUs of today).  While x32 operating systems can leverage PAE, that's not the case for NX - that is x64-only on the OS side. However, memory management is the biggest advantage - especially below 4 GB on the OS side.

 

Memory management in x32 has a ton of backward-compatibility built into it - for ease-of-transition reasons; remember, developing for even x32 was heavily resisted initially. However, all that ease-of-transition backward compatibility stuff baked into x32 has become a lead weight - a liability instead of an asset.  (Reminds me a lot of the Flash vs. HTML argument - for everything from Web pages to application and e-commerce front ends.)  Memory management in x64 is almost completely different from the bottom up - I would ask you to compare Firefox to the two most popular x64 iterations of the same code - Waterfox and Pale Moon.  (The very reason I included both Waterfox and Pale Moon is that the two browsers - while both are x64 - take different approaches from each other - let alone from what the Mozilla Foundation took on the x32 side.  When a true Win64 version of Mozilla Firefox arrives, add it to the comparison.)  There is STILL a lot of R&R when it comes to development; I'm not referring to "rest and relaxation", but "resistance and recalcitrance" - it's a "creature of humanity" that I doubt we will ever succeed in making endangered, let alone extinct.

I refer to stability in terms of fewer crashes, not necessarily less vulnerable to outside forces - oddly enough, the primary reason FOR that increased stability is what you just stated - better memory management.  Browsers and productivity applications are even better examples than operating systems - the biggest driver behind moving who I support - and myself - to x64 was fewer crashes in web browsing and productivity applications (such as Office) -  not gaming.

 

I wasn't saying that x64 OSes have better memory management, I was simply saying that you have a larger address space available. Given the same amount of resources, you'd actually run out of resources quicker on a 64-bit OS because pointer sizes are larger so effectively by your definition of stability, an x64 OS would be less stable given the same amount of resources. In any case, OoM states aren't stability issues (Athernar pointed this out earlier in the thread). If the OS is completely depleted of resources it will simply have to cut programs until there is memory available for it to operate or for other programs that request memory. It's simply a resource mitigation issue.

 

However, there's an advantage in terms of security that is unique to x64 - and it's a CPU hardware feature that operating systems can leverage.  Had we forgotten about NX (No eXecute)? NX is old; it's also pretty much ubiquitous; while Intel played it up with their first x64 CPUs, AMD supports NX as well (Opteron and all of its progeny, including AMD's Fusion APUs of today).  While x32 operating systems can leverage PAE, that's not the case for NX - that is x64-only on the OS side. However, memory management is the biggest advantage - especially below 4 GB on the OS side.

 

Sure, a hardware NX bit has security advantages over software DEP, it had slipped my mind when I mentioned ASLR in my original post. The point there was that unless you were talking about security advantages, I don't see where you are getting 64-bit OSes are inherently more stable. The only advantages that you could construe as stability advantages are security related.

 

Memory management in x32 has a ton of backward-compatibility built into it - for ease-of-transition reasons; remember, developing for even x32 was heavily resisted initially. However, all that ease-of-transition backward compatibility stuff baked into x32 has become a lead weight - a liability instead of an asset.  (Reminds me a lot of the Flash vs. HTML argument - for everything from Web pages to application and e-commerce front ends.)  Memory management in x64 is almost completely different from the bottom up ...

 

I really haven't the foggiest what you are talking about in the text I bolded or why it would affect system stability. The only effective differences I know of at the OS level is what MS says at these links: http://support.microsoft.com/kb/294418http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx

 

...  I would ask you to compare Firefox to the two most popular x64 iterations of the same code - Waterfox and Pale Moon.  (The very reason I included both Waterfox and Pale Moon is that the two browsers - while both are x64 - take different approaches from each other - let alone from what the Mozilla Foundation took on the x32 side.  When a true Win64 version of Mozilla Firefox arrives, add it to the comparison.) 

 

How is this text related to the discussion of 64-bit vs 32-bit OS stability? The best I can surmise is that you are mentioning the software because:

  • they use out of process plugin execution to prevent the entire browser from crashing (similar to chrome).
  • they use x86_64 instructions for x64 builds like all x64 software.
  • they use different optimization switches from normal firefox.

None of that stuff is related 64-bit vs 32-bit OS stability so you are going to have be more specific here as to why the browsers are relevant to the discussion...

 

There is STILL a lot of R&R when it comes to development; I'm not referring to "rest and relaxation", but "resistance and recalcitrance" - it's a "creature of humanity" that I doubt we will ever succeed in making endangered, let alone extinct.

 

What? :rolleyes:

...

However, there's an advantage in terms of security that is unique to x64 - and it's a CPU hardware feature that operating systems can leverage.  Had we forgotten about NX (No eXecute)? NX is old; it's also pretty much ubiquitous; while Intel played it up with their first x64 CPUs, AMD supports NX as well (Opteron and all of its progeny, including AMD's Fusion APUs of today).  While x32 operating systems can leverage PAE, that's not the case for NX - that is x64-only on the OS side. However, memory management is the biggest advantage - especially below 4 GB on the OS side.

 ...

What? That's not the case at all.

Edit: Oh, and 64bit Firefox for Windows is less stable than the 32bit release, along with other issues. That's why Mozilla don't have it as an official release, not because of any ideological reasons or whatever else people like to claim.

What? That's not the case at all.

 

Correct me if I'm wrong, but I do think the hardware supported version of an NX bit is x64 only. OSes had similar similar concept for marking executable/non-executable pages prior to that bit being in hardware though and you are probably thinking of that. 

 

EDIT: Oh wait, you are probably referring to what he said about PAE not being able to use the NX bit. Yeah, he's entirely wrong about that. I wasn't paying attention to that when I replied to him.

AMD tied the NX bit to their 64bit CPUs, but Intel didn't (Although not in a way that really matters), they first introduced it in a series of Celeron processors that were 32bit only, then introduced support for it across the board with the introduction of their 64bit CPUs.

But meh

The actual way to access it is through extended bits on the page table, which you get under 64bit and PAE, and Windows runs in PAE mode by default.

  • Like 1

AMD tied the NX bit to their 64bit CPUs, but Intel didn't (Although not in a way that really matters), they first introduced it in a series of Celeron processors that were 32bit only, then introduced support for it across the board with the introduction of their 64bit CPUs.

But meh

The actual way to access it is through extended bits on the page table, which you get under 64bit and PAE, and Windows runs in PAE mode by default.

 

Yup, I just wasn't reading closely enough what PGHammer actually wrote :)

I wasn't saying that x64 OSes have better memory management, I was simply saying that you have a larger address space available. Given the same amount of resources, you'd actually run out of resources quicker on a 64-bit OS because pointer sizes are larger so effectively by your definition of stability, an x64 OS would be less stable given the same amount of resources. In any case, OoM states aren't stability issues (Athernar pointed this out earlier in the thread). If the OS is completely depleted of resources it will simply have to cut programs until there is memory available for it to operate or for other programs that request memory. It's simply a resource mitigation issue.

 

 

Sure, a hardware NX bit has security advantages over software DEP, it had slipped my mind when I mentioned ASLR in my original post. The point there was that unless you were talking about security advantages, I don't see where you are getting 64-bit OSes are inherently more stable. The only advantages that you could construe as stability advantages are security related.

 

 

I really haven't the foggiest what you are talking about in the text I bolded or why it would affect system stability. The only effective differences I know of at the OS level is what MS says at these links: http://support.microsoft.com/kb/294418http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx

 

 

How is this text related to the discussion of 64-bit vs 32-bit OS stability? The best I can surmise is that you are mentioning the software because:

  • they use out of process plugin execution to prevent the entire browser from crashing (similar to chrome).
  • they use x86_64 instructions for x64 builds like all x64 software.
  • they use different optimization switches from normal firefox.

None of that stuff is related 64-bit vs 32-bit OS stability so you are going to have be more specific here as to why the browsers are relevant to the discussion...

 

 

What? :rolleyes:

I'm saying that all people are not exactly fans of changing how they do things - the difference is how changes are dealt with/accepted.  Rather amazingly, the further up the ladder you go, the more resistance and recalcitrance (not less) you run into - or has it not been pointed out that managers are more resistant/recalcitrant than those they manage?  As much as the issue here is IT (and gaming in particular), it's far from unique to gaming, or IT - hence my referring to it as a "creature of humanity", because such resistance and recalcitrance is about everything.

 

The only real difference is in degree.

What? That's not the case at all.

Edit: Oh, and 64bit Firefox for Windows is less stable than the 32bit release, along with other issues. That's why Mozilla don't have it as an official release, not because of any ideological reasons or whatever else people like to claim.

Actually, the issue for Firefox (and it's still a problem for Pale Moon and Waterfox) is a lack of fully x64 plug-ins (no non-beta x64 Flash plug-in, for example - for other common plug-in types, there's not even that for any browser - even IE).

And I never said that it was an ideological issue for Mozilla - the plug-in problem is quite valid.  (Remember, even though IE x64 is the most common of the x64 browsers, how many x64 plugins or AX controls are there for even it?)  I have referred to the plug-in problem as the equivalent of an "x32 jail", while others (in Neowin's Browser Forum) are far less charitable.

Well, Mozilla could do a 32bit plugin with a 64bit browser host, but it's hard (Unlike OS X, you can't have 2 different architectures in a single binary) and even then it's only a compatibility shim (The proper solution to 32bit plugins with a 64bit host is to replace them with 64bit plugins)

And yes, there are stability issues, for the longest time 64bit Firefox didn't have a crash reporter due to differences in the 64bit API, so people using the 64bit nightly just didn't report crashes, the printing code used 32bit pointers instead of the right length ones, etc.

Edit: IE runs in 32bit mode by default, that'd be a big reason why people don't make 64bit plugins for it. Same as WMP and codecs.

I'm saying that all people are not exactly fans of changing how they do things - the difference is how changes are dealt with/accepted.  Rather amazingly, the further up the ladder you go, the more resistance and recalcitrance (not less) you run into - or has it not been pointed out that managers are more resistant/recalcitrant than those they manage?  As much as the issue here is IT (and gaming in particular), it's far from unique to gaming, or IT - hence my referring to it as a "creature of humanity", because such resistance and recalcitrance is about everything.

 

The only real difference is in degree.

 

Sure, but I still don't understand how this is related to 64-bit vs 32-bit stability at the architecture level. Just because Mozilla has a more stable build one way or the other; or has resistance in moving to a native 64-bit build, doesn't mean there are inherit stability differences at the architectural level.

This topic is now closed to further replies.
  • Posts

    • Waymo recalls self-driving software after cars enter closed freeway work zones by Paul Hill Waymo, the self-driving car maker owned by Alphabet – the parent company of Google –, has recalled some of its fifth-generation Automated Driving Systems (ADS). It did so after some of its cars drove through closed construction zones. According to the National Highway Traffic Safety Administration (NHTSA), the affected vehicles were capable of driving through a closed freeway construction zone and continuing to drive at speed. The listing on the NHTSA website says that Waymo is currently developing a solution to fix this issue, but in the meantime, freeway driving is being restricted. Waymo will update its ADS software so that vehicles can detect when they can avoid entering construction zones. According to the Safety Recall Report, on April 20, 2026, Waymo’s Field Safety Committee began meetings reviewing an event from April 11, 2026, and five events from April 19, 2026, where Waymo’s autonomous vehicles didn’t recognize and drove past ramp closure signs into the pre-planned freeway construction zones. This took place in Phoenix, Arizona. Separately, on May 18, 2026, seven Waymo vehicles entered freeway lanes with active construction in the San Francisco Bay Area by driving between cones that were placed to show the lane was closed. On the back of both of these events, Waymo restricted freeway driving until it could address the issue. In June, Waymo’s Safety Board reviewed the issue and additional information related to ADS performances around construction zones; then, as a result, it decided to conduct a recall. This development is not good for Waymo as it adds to a growing list of technical hiccups its cars have experienced. Ultimately, it will lead to more scrutiny from lawmakers around the world who will be more cautious about letting autonomous vehicles on their roads without tighter regulation. For readers in areas where Waymo operates, does this news make you more wary about stepping into one of these vehicles?
    • I'm still on Windows 10 22H2 because I didn't want to deal with all the issues in Windows 11, so I waited almost a week before installing the latest Patch Tuesday update (KB5094127), I went ahead and did it, and it was a huge mistake—ever since then, my File Explorer has seen a performance drop of about 30% when transferring large files... Once again, Microsoft has outdone itself! This update cannot be uninstalled, either through the Control Panel (via Settings) or by accessing Advanced Startup Options. The only possible alternative would be to use system restore points, but I’d have to reinstall all app and driver updates (and there’s no guarantee it would work). Or there’s the “nuclear option” of a in-place repair without losing files or apps, but even then, all my customizations would be lost! Microsoft just can’t help but mess everything up! Way to go, Microsoft! But I still don’t want your c****y Windows 11!
    • Microsoft: Windows 11 could finally solve a major issue across AMD, Nvidia, and Intel GPUs by Sayan Sen While Microsoft has been trying to improve it, Windows 11 is definitely not flawless, as even today some issues are taking a year to publicly acknowledge. However, one area of trouble that may finally see much better results soon is graphics driver crashes. Work on graphics driver timeouts, also called Timeout and Detection Recovery (TDR), is not new as the latest WDDM 3.2 also has specific improvements regarding it. Windows Display Driver Model (WDDM) version 3.2 is supported on Windows 11 24H2 and 25H2. However, with the upcoming version 26H2, TDR crash diagnosis could go to the next level as Microsoft is introducing a new DirectX 12 API feature called "DirectX Dump Files". Similar to how system memory dump files work when a system crashes or freezes or encounters any such major issue, DirectX Dump Files (DDF) will essentially record a snapshot of the GPU execution right at the moment a graphics-related crash or hang or freeze occurs, so that developers can better understand and diagnoze these TDR and timeout detection errors. The dump will be available as a .dxdmp file for analysis and it will be a comprehensive dump file generated with detailed insights about the hardware, drivers, Windows, as well as the affected application. This should be another welcome change in this department. Earlier at GDC 2026, when the technology was first debuted, Microsoft had shared more details regarding it. The company had explained how DDF is designed to gather data from every layer of the graphics stack into a single file, eliminating the need for developers to manually correlate logs from multiple tools. As mentioned above, the dump can contain a lot of useful details like GPU hardware state information such as register values, shader program counters, page fault virtual addresses, shader memory data, and command buffers. Alongside that, it also captures DirectX runtime and kernel information, including D3D objects, pipeline state objects, device error data, adapter details, and CPU call stacks. Microsoft says the feature has been built around two primary use cases: retail device removals and local device removals. The former allows developers to collect crash information from end users' systems in the field, while the latter helps QA teams and developers investigate issues on test machines. Developers will also be able to include up to 2 MB of custom application data through new D3D12 APIs, providing additional context for troubleshooting. In addition, Microsoft is introducing three dump collection modes ranging from zero-overhead capture, which has no runtime performance impact on supported hardware, to higher-detail modes that collect more vendor-specific debugging data. On compatible Tier 2 hardware, zero-overhead dumps will be enabled by default, meaning developers may begin receiving useful crash diagnostics without making any code changes. The table below explains the three tiers: Tier Description NO_OVERHEAD Enables crash capture with no runtime cost and is suitable for broad deployment MEDIUM_OVERHEAD Provides a balance, capturing additional diagnostic data with moderate impact HIGH_OVERHEAD Collects the most detailed GPU and driver state available, enabling deeper investigation at the cost of higher runtime overhead In terms of availability, the company expects broader release to be around the fall of 2026, which should be right around the time when Windows 11 version 26H2 lands. Right now, DirectX Dump Files are available as a preview and currently, only AMD has the compatible AgilitySDK Developer Preview driver version 26.10.07.02. You can find the official announcement post here on Microsoft's website.
    • And with SO much better perf than the laggy mess that is Files.
  • Recent Achievements

    • First Post
      BizSAR earned a badge
      First Post
    • Week One Done
      Jordan Smith earned a badge
      Week One Done
    • Reacting Well
      BizSAR earned a badge
      Reacting Well
    • First Post
      AndreaB earned a badge
      First Post
    • Week One Done
      Huge Trailer earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      598
    2. 2
      +Edouard
      190
    3. 3
      PsYcHoKiLLa
      80
    4. 4
      Michael Scrip
      76
    5. 5
      Steven P.
      69
  • Tell a friend

    Love Neowin? Tell a friend!