BASIS logo New  
Technical Communique 
September 9, 2016                                                               TC-16008


This announcement is for all customers using Windows Servers and BBj 16.00 - BBj 16.11. BASIS has discovered that it is possible for an application hosted on a Windows Server and running a version of BBj 16.00 through 16.11 to corrupt a data file in some narrow circumstances, see the details below. The exposure is fairly small, only one customer has experienced the corruption during the time since the release of 16.00. 

BASIS wants to make sure that everyone running BBj 16.00 - BBj 16.11 on Windows Servers is aware of the risk and knows that the most current release of BBj (BBj 16.11p1 -- 09/07/2016 12:24) prevents this Windows OS anomaly from causing data corruption and that an interim workaround exists

The customer that experienced this corruption has provided a sample program that demonstrates the issue, and allowed us to quickly provide a permanent workaround for the Windows OS issue in BBj 16.11p1. BBj 16.11p1 is available for download today. Go to the download page and select the 16.11 release.

Please don't hesitate to contact BASIS technical support via support@basis.com should you need assistance in recovering data from a corrupted file.
DetailsDetails
The problem arises when two BBj threads running on a Windows OS attempt to open a previously unopened file at the exact same time. This can cause one of the threads to erroneously open the file as a pipe file instead of as a data file. Should that thread (interpreter session) perform a WRITE without a KEY clause as the next file operation after the OPEN, the WRITE will overwrite the file header, causing the file to become corrupt.

The most direct way to detect that the file has been opened as a pipe file is to examine the FIN or FID:
  • Byte 19 of the FIN will be 3 (instead of 0)
  • The FID will contain only the file path without additional file type information
The main symptom that will manifest in the application will be that most data file operations attempted, such as as READ without a size or KEY will result in an !ERROR=13.

Workaround: Keep the file open on a persistent channel. This will prevent the file from being opened as a pipe file and therefore avoid any possible WRITE corruption to the file header.

RecommendationBASIS International strongly recommends that all BBj 16.00 → BBj 16.11 Windows deployments upgrade BBj to BBj 16.11p1.

Support: In the event that you have encountered data corruption and require advice and guidance on recovering the data, contact BASIS Technical Support via support@basis.com
StayingStaying Connected
The BASIS International Advantage
Dig into the wealth of information in this technical publication. Read the articles online or download to your device of choice. Click here.

Communications
For current information, be sure to subscribe to all BASIS announcements and join our discussion forums.
View our videos on YouTube Like us on Facebook Follow us on Twitter View our profile on LinkedIn Find us on Google+ 

BBj, BBx, AddonSoftware, and Barista are registered trademarks of BASIS International Ltd.