You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by "Dave Thompson (Jira)" <ji...@apache.org> on 2023/02/08 15:46:00 UTC

[jira] [Closed] (DAFFODIL-2628) abort: invariant broken when assert test expression does not return boolean

     [ https://issues.apache.org/jira/browse/DAFFODIL-2628?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dave Thompson closed DAFFODIL-2628.
-----------------------------------

Verified the specified commit (commit 45a73676a53b88f177f4c1855232e4f8c4e1a97c) is included in the latest pull from the daffodil repository.

Verified, via review, change identified in the commit comment were implemented. 

Verified the affected daffodil subproject sbt test suites executed successfully including the added test.

Rolled back to a pre-fix commit, copied the associated .tdml and .scala test files and verified that the added test failed for the identified error. Verified the error does not occur on the fix commit.

> abort: invariant broken when assert test expression does not return boolean
> ---------------------------------------------------------------------------
>
>                 Key: DAFFODIL-2628
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2628
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Back End, Middle &quot;End&quot;
>    Affects Versions: 3.2.1
>            Reporter: Mike Beckerle
>            Assignee: Mike McGann
>            Priority: Major
>             Fix For: 3.5.0
>
>
> Debugging a schema I created this little thing to print out a length I wanted to see:
> ```
>         <dfdl:assert test='{ dfdlx:trace(dfdl:valueLength(message, "bytes"),"contentLen")  }'/>
>  
> ```
> Notice the mistake. I forgot to compare the value to 0 in the test. 
> That expression returns an integer.
> If you fix the expression (add " ge 0") then everything works fine.
> But with the mistake you get an abort at runtime:
> ```
> trace contentLen:DataValue(true)
> org.apache.daffodil.exceptions.Abort: Invariant broken. Runtime.scala - Leaked exception: java.lang.ClassCastException: class java.lang.Boolean cannot be cast to class java.lang.Long (java.lang.Boolean and java.lang.Long are in module java.base of loader 'bootstrap')
> java.lang.ClassCastException: class java.lang.Boolean cannot be cast to class java.lang.Long (java.lang.Boolean and java.lang.Long are in module java.base of loader 'bootstrap')
> 	at org.apache.daffodil.infoset.DataValue$.getLong$extension(DataValue.scala:78)
> 	at org.apache.daffodil.dpath.LongToBoolean$.computeValue(ConverterOps.scala:155)
> 	at org.apache.daffodil.dpath.LongToBoolean$.computeValue(ConverterOps.scala:153)
> 	at org.apache.daffodil.dpath.Converter.run(DPathRuntime.scala:294)
> 	at org.apache.daffodil.dpath.CompiledDPath.run(DPathRuntime.scala:141)
> 	at org.apache.daffodil.dpath.CompiledDPath.runExpression(DPathRuntime.scala:72)
> ```



--
This message was sent by Atlassian Jira
(v8.20.10#820010)