◐ Shell
clean mode source ↗

Coverage Report doesn't run (or takes forever)

The coverage report doesn't run or takes forever.

version: 18.0.0.0.0
compatibility: 18.0.0
ut_version: v3.1.3.2402
Edition: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0
Port String: x86_64/Linux 2.4.xx

Information about client software
SQLDeveloper, SQLPlus, utPLSQL-cli

To Reproduce
./utplsql run ***/***@host:1521/*** -f=ut_coverage_html_reporter -o=coverage.html

Expected behavior
A HTML file with the coverage report

Details of the issue
A couple of "utPLSQL" and "JDBC Thin Client" database sessions get stuck waiting forever for the following wait-events:

  • resmgr:cpu quantum
  • PL/SQL lock timer
  • PX Deq: Execute Reply

The SQL running queries are:

select full_name
       , owner
       , name
       , line
       , to_be_skipped
       , text
from (
  select lower(s.owner || '.' || s.name) as full_name
         , s.owner
         , s.name
         , s.line - coalesce(
    case
      when type != 'TRIGGER' then
        0
    end
  ,(
    select min(t.line) - 1
    from dba_source t
    where t.owner = s.owner
          and t.type = s.type
          and t.name = s.name
          and regexp_like(t.text, '[A-Za-z0-9$#_]*(begin|declare|compound).*', 'i')
  )) as line
         , s.text
         , case
    when
                     -- to avoid execution of regexp_like on every line
                     -- first do a rough check for existence of search pattern keyword
     ( lower(s.text) like '%procedure%'
           or lower(s.text) like '%function%'
           or lower(s.text) like '%begin%'
           or lower(s.text) like '%end%'
           or lower(s.text) like '%package%' )
         and regexp_like ( s.text
    , '^([\t ]*(((not)?\s*(overriding|final|instantiable)[\t ]*)*(static|constructor|member)?[\t ]*(procedure|function)|package([\t ]+body)|begin|end([\t ]+\S+)*[ \t]*;))'
    , 'i' ) then
      'Y'
  end as to_be_skipped
  from dba_source s
  where s.owner in (
    select upper(t.column_value)
    from table ( :l_schema_names ) t
  )
        and s.type not in (
    'PACKAGE'
    , 'TYPE'
    , 'JAVA SOURCE'
  )
             --Exclude calls to utPLSQL framework, Unit Test packages and objects from a_exclude_list parameter of coverage reporter
        and ( s.owner
  , s.name ) not in (
    select el.owner
           , el.name
    from table ( :l_skipped_objects ) el
  )
)
where line > 0

and

select column_value as text
from table ( ( :b1 ).get_lines ( :b2
, :b3 ) )

Running the tests works fine. Only the Coverage Report doesn't run.