Products

Jinx FAQ

What is Jinx?

Jinx is a software quality tool that exposes hard-to-find concurrency bugs in software. It accelerates the rate at which bugs occur in your software, saving you time and resources in the effort to deliver higher quality ThreadSafe applications. With Jinx, your organization can permit its developers to exploit the full power of multi-core processors, provide a safety net for testers to find bugs before they are introduced into production environments, and enable IT administrators to validate full systems comprised of operating systems, drivers, and applications before certifying them as ready for deployment. Jinx provides several benefits, including:

  • You can count on Jinx. When Jinx identifies a bug, you can be sure it’s real. There are no false positives with Jinx, saving you a significant amount of time in both finding a bug and determining its veracity. You can count on the results you get from using Jinx.
  • Jinx works the way you do. It doesn’t require you to change anything about your software development methodology. It’s integrated with Visual Studio and command line tools of Windows and Linux and can be easily introduced as part of every continuous integration cycle. It can augment the software testing tools you already use for load and stress testing by forcing bugs to happen faster. And, it can provide a valuable tool for IT administrators to use when building system images for large-scale deployment.
  • Easy to use and easy to get started. It takes about five minutes to download the product, install it, and begin using it. There’s no hassle, no fuss, and no complex configuration required.

 

Who is Jinx for?

Jinx is a software quality tool that helps all members of the software development lifecycle deliver more reliable, higher quality software. Jinx works by proactively examining thread timings as a program is run. Software projects are exercised in a variety of ways throughout every phase of the software lifecycle. Therefore, when Jinx is used at every point and by every member of the software lifecycle, it is able to more effectively find bugs.

Each member of the software lifecycle uses Jinx differently:

  • Software developers use Jinx to identify bugs during their build-debug cycle. Jinx will give them greater confidence in building parallel applications and exploiting the full power of their multi-core processors. When developers use Jinx, they find concurrency bugs before passing them on to other stakeholders in the software project. When all developers use Jinx (and not only those who are writing parallel algorithms), they will find more concurrency bugs because they exercise the whole software project in different ways.
  • Software testers and QA professionals use Jinx to amplify the effectiveness of their load, stress, and fuzz testing tools. Jinx doesn't perturb existing test harnesses. Rather, Jinx supplements them by examining thread timings as the software project is exercised under load and stress.
  • IT professionals use Jinx to "shake test" the entire system during acceptance testing or prior to system deployment. Jinx can find concurrency-related conflicts between operating systems, device drivers, and applications before they are found by users in production environments.
  • Security professionals use Jinx to complement their fuzz testing and other processes. Concurrency errors have the potential to be significant security and quality issues, and Jinx can give security professionals greater confidence in the systems they manage and help them reduce risk throughout their organization.

 

How does Jinx work?

Jinx is a software quality tool that exposes hard-to-find concurrency bugs at design-time, saving developers time and improving application reliability. Jinx examines your code and intelligently selects slices of execution time within which to probe deeper for bugs. Within each time slice, Jinx evaluates numerous possibilities for the timing of how various threads within an application interact with one another and execute, and chooses a particular schedule of thread execution that is most likely to cause a bug. As a result, Jinx makes your code “unlucky” by proactively causing it to crash so that you can investigate why it did so.

 

Does Jinx replace the debugger or development environment I currently use?

No. Jinx works the way you do and is a complementary tool to the development environments you already use. For example, if you’re a Visual Studio 2010 developer, you’re probably pretty excited about using the Parallel Stacks and Thread Viewer windows to debug your parallel applications. These windows provide a way for you to visualize the threads in your applications and the cores on which they are running. Jinx doesn’t replace these features, or the Visual Studio debugger itself. Rather, it augments the Visual Studio debugger by running simulations that proactively adjust the timing of the various threads in your application while you are debugging. During this simulation phase, Jinx is looking for particular thread timings that will cause a bug to occur. Once it finds a thread timing that will cause a bug, Jinx “replays” it into your development environment and points out the root cause of the bug. Without Jinx, you’d either have to employ a massive test matrix or try using kludges such as making a thread wait for a period of time in order to try and get these same bugs to manifest themselves. For more information, consult the Jinx Advantage.

 

Does Jinx integrate with my existing development environment?

Yes. Jinx is designed to work the way you do and is easily integrated into your existing development environment or workflow. For Visual Studio developers, Jinx is available as an add-in to Visual Studio. For both Windows and Linux developers, Jinx is available as a command line tool that can be integrated into your Makefiles or other build system.

 

Does Jinx integrate with my application lifecycle tools?

This is an oft-requested feature from our customers and something we’d like to support in a future version of Jinx.

 

Which versions of Visual Studio does Jinx support?

Jinx works well in all versions of Visual Studio 2005, Visual Studio 2008, and Visual Studio 2010, except the Visual Studio Express editions. Unfortunately, Visual Studio Express does not include an extensibility model for Jinx to plug into.

 

What is the technology behind Jinx?

Jinx is based on a research project from the University of Washington called Deterministic Shared-Memory Multi-Processing, or DMP. To understand DMP, one must first understand the concept of determinism. Determinism is the notion that, given a set of input, the application will always produce the same output. Traditional sequential programs behaved this way. Parallel applications, on the other hand, are non-deterministic, meaning that the same input doesn’t always yield the same output. This is because the operating system adjusts the timing of threads in an application based on a variety of factors external to the application, such as the operating system scheduling one processor over another, when one processor has less inhibited access to system memory, and so on. Non-deterministic applications pose a number of significant challenges, including difficulty in finding and reproducing defects, difficulty in debugging, testing, and supporting applications once in production, and a difficulty in achieving fault-tolerance.

DMP makes multi-core applications execute just like sequential programs: in a deterministic fashion. As a result, you can debug, test, and support applications the same way you do for sequential programs. DMP enables fault-tolerance for multi-threaded applications with very little performance penalty. And DMP can be implemented anywhere, including in hardware, a hypervisor, embedded within an operating system, and shipped as separately installed runtimes.

Corensic owns the patents and intellectual property for DMP and builds products based on the technology, beginning with Jinx.

 

What are the system requirements for using Jinx?

On Windows, the system requirements are as follows:

 

  • Jinx requires a system with VMX (Intel) or SVM (AMD) virtualization extensions.
  • Jinx is currently supported on 64-bit Windows Vista, Windows 7, and Windows Server 2008 platforms, and 32-bit Windows Vista and Windows 7 platforms.
  • Note: we are actively working on 32-bit Windows XP support.
  • 2GB RAM
  • At least 100MB of free hard drive space.

 

On Linux, the system requirements are as follows:

  • Jinx currently requires a system with VMX (Intel) or SVM (AMD) virtualization extensions.
  • Jinx is currently supported on 64-bit and 32-bit Linux platforms.
  • 2GB RAM
  • At least 100MB of free hard drive space

 

How much does Jinx cost?

Jinx for Windows and Jinx for Linux are both currently generally available. Jinx is priced at $1999 USD per user. Other licensing terms, including shared machine, floating licensing, and test lab licensing, are available. Email sales@corensic.com for pricing terms or download the 14-day trial today.

 

When will Jinx ship?

Jinx for Windows and Jinx for Linux are both currently generally available (as version 1.2).

 

What new features can I expect in the future?

We are hard at work on even better bug finding technology, functionality to facilitate better communication about bugs (including integration with software lifecycle tools, such as issue tracking systems), support for new platforms and devices, and features that will provide even more insight into potential errors in your software. Email sales@corensic.com if you have suggestions, or would like to participate in our beta program.

And if you're really interested in providing feedback, consider joining our team.

 

How do I obtain my license keys?

Any license keys you have purchased may be obtained by first logging in to your account and then going to the My Product License Keys page.

 
);