title: Compiling a PL/SQL function in Oracle 11g2 XE sometimes leads to a ORA-00600: internal error
body: <p>I have a PL/SQL function that I'm working with that sometimes compiles ok but sometime give me this error.</p>
  
  <pre><code>ORA-00600: internal error code, arguments: [17285], [0x318FDE2C], [1], [0x273F1C60], [], [], [], [], [], [], [], []
  00600. 00000 -  "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
  *Cause:    This is the generic internal error number for Oracle program
         exceptions.  This indicates that a process has encountered an
         exceptional condition.
  *Action:   Report as a bug - the first argument is the internal error number
  </code></pre>
  
  <p>Disconnecting and reconnecting to the Oracle and the function compiles ok which feels crazy...</p>
  
  <p>Googling the error code and argument gave me this </p>
  
  <pre><code>ERROR:
  ORA-600 [17285] [a] [b] [c]
  
  VERSIONS:
  versions 7.0 to 10.1
  DESCRIPTION:
  Oracle is in the process of deleting an instantiation object when it
  discovers that the object is currently on the call stack.
  This should not occur and so ORA-600 [17285] is reported.
  ARGUMENTS:
  Arg [a] Instantiation object
  Arg [b] Call stack nesting level
  Arg [c] Library Cache Object Handle
  FUNCTIONALITY:
  Kernel Generic Instantiation manager
  
  IMPACT:
  PROCESS FAILURE
  NON CORRUPTIVE - no corruption to underlying data.
  SUGGESTIONS:
  This error is usually accompanied by another error. Please check for this.
  </code></pre>
  
  <p>My function returns a custom table type pipelined. Most function code left out...</p>
  
  <pre><code>CREATE TYPE t_solexp_row AS OBJECT (
  obj         VARCHAR(30),
  dt          DATE,
  param       VARCHAR(30),
  param_id    NUMBER,
  val         NUMBER,
  change_time TIMESTAMP
  );
  /
  
  CREATE TYPE t_solexp_tab IS TABLE OF t_solexp_row;
  /
  
  CREATE OR REPLACE FUNCTION get_solexp_tab(p_start_date IN DATE, p_end_date IN DATE) RETURN t_solexp_tab PIPELINED AS
  BEGIN
      ...
      LOOP
          PIPE ROW(t_solexp_row(...,...,...,...,...,...);
      END LOOP;
      ...
      RETURN;
  END;
  /
  </code></pre>
  
  <p>Any idea of what may cause this behavior?</p>