Library array variable limitation?

I have a project (RCM4200) which hangs the Dynamic C IDE depending on the declared size of an array which lives in a LIB file. Here is a simplified project which demonstrates this:

/*** BeginHeader */
/*** EndHeader */

/*** BeginHeader */
typedef struct MapBxxx1
   unsigned short SyncCode[34];
} MapBxxx1_t;
/*** EndHeader */

/*** BeginHeader MapBxxx1, MapBxxx1_0, MapBxxx1_1, MapBxxx1_2, MapBxxx1_3 */
extern MapBxxx1_t MapBxxx1[4];
extern MapBxxx1_t MapBxxx1_0;
extern MapBxxx1_t MapBxxx1_1;
extern MapBxxx1_t MapBxxx1_2;
extern MapBxxx1_t MapBxxx1_3;
/*** EndHeader */

MapBxxx1_t MapBxxx1[4];
MapBxxx1_t MapBxxx1_0;
MapBxxx1_t MapBxxx1_1;
MapBxxx1_t MapBxxx1_2;
MapBxxx1_t MapBxxx1_3;

/*** BeginHeader */
/*** EndHeader */

and the main c file:

#class auto

#use RCM42xx.LIB

#use DBSSStuff.LIB

MapBxxx1_t LOCALMapBxxx1[4];

void main()
   // Do any initialisation required

   // FAIL     -----    Can't touch item 3!!
   MapBxxx1[3].SyncCode[0] = 3;
   MapBxxx1[2].SyncCode[0] = 2;
   MapBxxx1[1].SyncCode[0] = 1;

   LOCALMapBxxx1[3].SyncCode[0] = 3;
   LOCALMapBxxx1[2].SyncCode[0] = 2;
   LOCALMapBxxx1[1].SyncCode[0] = 1;

   MapBxxx1_3.SyncCode[0] = 3;
   MapBxxx1_2.SyncCode[0] = 2;
   MapBxxx1_1.SyncCode[0] = 1;


Commenting out the line below the fail marker makes the project run. With the line uncommented the IDE hangs and times out.

As you can see a locally declared array works but one in a library fails.

This also seems to depend on the size of the record: anything over 66 bytes fails.

Is there a documented (or undocumented) limitation on external array sizes? Am I doing something wrong in my LIB file?