Skip to Main Content

Oracle Forms

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

use of multi-dimensional arrays in forms - forms debugger crash

2822481Feb 15 2011
Hello All readers,

have an issue with use of multi-dimensional arrays in forms when debugging and/or calling another form post array-population.

USING VERSIONS: oracle forms 9.0.4, Jinitiator 1.3.1.17, oracle db 10.1

the following code snippet works from a when-button-pressed trigger when called without the debugger. when called with the debugger it crashes when any element of the multi-dimensional associative array is accessed/populated/read. In addition, if i populate the multi-dimensional array then call a form (a msgbox form to display the arrays content as a string) it crashes too.


declare


type datasource_rec is record (field varchar2(32), val varchar2(3999));
type datasource_arr is table of datasource_rec index by binary_integer;
type datasource_arr_arr is table of datasource_arr index by binary_integer;

l_arr datasource_arr_arr;


-----------------------------
procedure poparr(i_arr out datasource_arr_arr) is

idx binary_integer := 1;
iidx binary_integer := 1;

begin

while (idx <= 10) loop
iidx := 1;
while (iidx <= 10) loop

i_arr(idx)(iidx).field := 'field'||to_char(iidx)||':'||to_char(idx); --# debugger crashes here with JVM aborting... message (which crashes forms builder too)
i_arr(idx)(iidx).val := 'test value';

iidx := iidx+1;
end loop;

idx := idx+1;
end loop;

end;


-----------------------------
procedure printarr is
idx binary_integer := l_arr.first;
iidx binary_integer;
l_msg varchar2(4000);
l_response pls_integer;
begin

while (idx is NOT null) loop

iidx := l_arr(idx).first;
while (iidx is NOT null) loop

l_msg := l_msg||chr(10)||l_arr(iidx)(idx).field||' = '||l_arr(iidx)(idx).val;

iidx := l_arr(idx).next(iidx);
end loop;

idx := l_arr.next(idx);
end loop;

alerts.info('see console for full printout: '||chr(10)||l_msg);
--l_response := msgbox.show(l_msg); --calls another modal form to display a long message, which crashes the runtime with a java console message*
r$debug.print(l_msg);
end;
-----------------------------

begin

poparr(l_arr);
printarr;


end;


--------------------------------------------------------------------------------------
The java console does not print anything useful when both forms builder and the runtime crash/hangs as a result of the debugger being attached (except displaying a "JVM aborting" message) but when the runtime alone crashes as a result of calling another form after popping the MD array it prints:
--------------------------------------------------------------------------------------

oracle.forms.net.ConnectionException: Forms session <28> aborted: unable to communicate with runtime process.

at oracle.forms.net.ConnectionException.createConnectionException(Unknown Source)

at oracle.forms.net.HTTPNStream.getResponse(Unknown Source)

at oracle.forms.net.HTTPNStream.doFlush(Unknown Source)

at oracle.forms.net.HTTPNStream.flush(Unknown Source)

at java.io.DataOutputStream.flush(Unknown Source)

at oracle.forms.net.StreamMessageWriter.run(Unknown Source)

has anyone else encountered this problem and found a solution/workaround? is their some sort of memory limitation for forms-side handling of (multi-dimensional) arrays?+

many thanks

ps: i get similar problems when a) populating the array from a server/db-side packaged procedure (crashes with java console message as above even when not debugging) b) using server/db-side packaged types for the array.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 15 2011
Added on Feb 15 2011
0 comments
675 views