The Australian Transport Safety Bureau says a fault in a computer caused a nosedive by a Qantas passenger jet last week.
At least 50 people were hurt, when the Airbus A330-300 plunged more than 300m over Western Australia.
The ATSB said its inquiries had found a fault in a computer unit that detects the angle at which the plane is flying.
The incident has prompted manufacturer Airbus to issue emergency guidelines.
ATSB chief air investigator Julian Walsh said preliminary investigations into the incident had found that one of the plane's three air data inertial reference units had malfunctioned.
The units detect, through sensors, the angle at which the plane is flying against the airstream. Mr Walsh said in this case, the faulty unit determined the plane was climbing when it was actually in level flight.
The plane was en route from Singapore to Perth on 7 October with 313 people on board when the incident occurred.
It was cruising at about 11,300m (37,000ft) when it suddenly climbed 60m and then made two steep descents, falling some 300m in total in a period lasting about a minute.
The plane made an emergency landing at a remote airbase near the north-western town of Exmouth.
Mr Walsh said Airbus had issued emergency guidelines to plane operators explaining how to handle a similar incident.
A full report is due to be released by the ATSB next month.
The incident was the latest in a spate of mishaps and malfunctions for Qantas, which prides itself on its safety record.
In July, a Qantas Boeing 747 flying from Hong Kong to Melbourne was forced to make an emergency landing after an oxygen cylinder caused an explosion which blew a large hole in the fuselage. The incident is still being investigated.