- 15 Non-Certified IT Skills Growing in Demand
- How 19 Tech Titans Target Healthcare
- Twitter Suffering From Growing Pains (and Facebook Comparisons)
- Agile Comes to Data Integration
IDG News Service - The Nasdaq computer system that delayed trade notices of the Facebook IPO on Friday was plagued by race conditions, the stock exchange announced Monday. As a result of this technical glitch in its Nasdaq OMX system, the market expects to pay out US$13 million or even more to traders.
A number of trading firms lost money due to mismatched Facebook share prices. About 30 million shares' worth of trading were affected, the exchange estimated.
On Friday, Nasdaq had delayed Facebook's IPO by 30 minutes. For about 20 minutes, the exchange stopped confirming trades placed by brokers, who were unable to see the results of their orders for more than two hours.
The problem stemmed from Nasdaq's IPO Cross, a pre-IPO auction process the exchange put in place in 2006 that allows traders to place orders and agree on an IPO price before the stock is officially launched, according to a Nasdaq statement issued on Monday.
Typically, in the minutes before an IPO launch, IPO Cross will run an auction in which traders can put in bids, and then calculate an opening price using these auction bids. The opening price would then be fed to the Nasdaq tape. After the opening price is calculated and just before it prints its opening price to the tape, IPO Cross checks to see if any additional orders have been placed since it started its calculation. In Facebook's case, additional orders kept coming in, which caused IPO Cross to recalculate the price multiple times, resulting in the delay past the 11 a.m. scheduled opening.
The problem was only fixed at 11:30 a.m., when Nasdaq switched to a backup version of the IPO Cross matching engine, which allowed the stock to go live on Nasdaq. Unfortunately, this secondary instance of the engine used calculations made at 11:11 a.m., ignoring any bids entered in the system since then. Also during this time, some customers did not receive order confirmations or had their connectivity from their own systems momentarily cut. Orders entered between 11:11 a.m. and 11:30 a.m. were not executed until after 11:30 a.m., resulting in trades that were not fully understood by brokers.
Nasdaq characterized the problem as a race condition. A race condition occurs when two or more parts of a program that rely on each other get locked in an infinite loop, halting forward progress of the program as a whole. The race condition in this case took place between the auction process and the final calculation of the IPO price.
While most race conditions can be identified by simply testing programs while in development, in some cases they may not become apparent until the software is stressed under heavy usage, said Scott Sellers, CEO of software provider Azul Systems. Azul offers a version of the JVM (Java Virtual Machine) engineered for extreme scalability.
While Sellers had no direct information about this Nasdaq system, he did say that many of his customers and potential customers -- which include other financial exchanges -- have experienced race conditions only under heavy loads, as multiple threads in the program interact with one another in sometimes unpredictable ways. So the frenzy of trading around the Facebook IPO might have been enough to expose a flaw in the software, he said.