Weird Pro*C trace file

I was wondering if anyone could help me with the below strange
occurance?

We have a Pro*C application running on our DB server (jurassic Oracle
9.2.0.1 on Windows 2003 r2 32-bit) which until very recently was
working without problems. Nothing (as far as I know) has changed in
this environment, but now the application is bombing out on one
particular query.

You'll notice what looks like incorrect syntax, trying to select into
':b1:b0'. But then, according to the trace file, Oracle goes ahead
with the PARSE, EXECUTE and FETCH steps with no problem. The FETCH
appears to be correctly fetching the one row (r=1). There's even a
query plan when the cursor is closed (the STAT lines).

Our Pro*C application is reporting an error, SQLCODE = -162. This must
be causing the 'SQL*Net break/reset to client' event. But ORA-00162
looks completely irrelevent.

The other weird thing is that the OBJ#(9602) and OBJ#(9603) are not
the OBJECT_IDs of the objects in the plan!

select object_name from dba_objects where object_id=9602;

OBJECT_NAME

javax/swing/text/rtf/RTFReader

SQL> select object_name from dba_objects where object_id=9603;

OBJECT_NAME

/d5f6a702_RTFGenerator

Has anybody seen this before? An Oracle bug perhaps?

Things that are weird:
1. Error ORA-00162 is "external dbid length string is greater than
maximum (string)" and this does not appear relevent at all.
2. Query has suspicious syntax but appears to parse, execute and fetch
ok. (So can have a : in a bind variable name!?)
3. OBJ#(9602) and OBJ#(9603) in the plan do not correspond to the
OBJECT_IDs of the table and index used in the query