Random access violations have plagued us since v7.0, from 10g through 12. I believe I've pinned down exactly what causes them and have a workaround... whether your crashes are related or not is unknown.
What we see is that anytime there's a lob/clob/xml/obj field in the query, a
select * will crash after 99 records. So we set our initial retrieval to 99 records, and try to avoid the '*'. We also try to specify the fields individually, and do a
.getclobval() on the object fields, as such:
select excptn_id, code_src, error_desc, esclt_lvl,
t.stack_trc.getclobval() stack_trc,
ora_errm, ora_code, create_dt
from exception_log;
Since starting these practices, I have never had an Access Violation error.
Interestingly, if I right-click a table with a clob/xml field and pick 'Query Data', PL/SQL Developer adds the getclobval() automatically. If I drag and drop the table into the editor and choose to generate a select statement, the fields are listed individually, but getclobval() is
not added, and will crash.