View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
---|---|---|---|---|---|---|---|---|---|
0000245 | mercury | Bug | public | 2011-12-07 22:19 | 2011-12-13 03:23 | ||||
Reporter | jfondren | ||||||||
Assigned To | juliensf | ||||||||
Priority | normal | Severity | crash | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Product Version | |||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0000245: [Java, 11.07-beta-2011-12-06] crashes with ClassCastException | ||||||||
Description | A program as simple as, main(!IO) :- io.write_string("Hello, world!\n", !IO). which runs fine in --grade=asm_fast.gc , or with 11.01's Java, crashes on start with 11.07-beta-2011-12-06's java grade. Exception in thread "main" java.lang.ExceptionInInitializerError at jmercury.list.MR_init_scalars_0(list.java:328) at jmercury.list.<clinit>(list.java:337) at jmercury.io.<clinit>(io.java:947) at jmercury.hello.main_2_p_0(hello.java:88) at jmercury.hello.main(hello.java:50) Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to jmercury.runtime.PseudoTypeInfo at jmercury.runtime.TypeInfo_Struct.init(TypeInfo_Struct.java:84) at jmercury.runtime.TypeInfo_Struct.<init>(TypeInfo_Struct.java:102) at jmercury.pretty_printer.MR_init_scalars_0(pretty_printer.java:695) at jmercury.pretty_printer.<clinit>(pretty_printer.java:781) ... 5 more | ||||||||
Additional Information | Mercury Compiler, version 11.07-beta-2011-12-06, configured for i686-pc-linux-gnu java version "1.6.0_22" OpenJDK Runtime Environment (IcedTea6 1.10.4) (fedora-60.1.10.4.fc16-i386) OpenJDK Server VM (build 20.0-b11, mixed mode) # failed identically with: java version "1.7.0_01" Java(TM) SE Runtime Environment (build 1.7.0_01-b08) Java HotSpot(TM) Server VM (build 21.1-b02, mixed mode) # 11.07-beta-2011-12-06 was built with configured by ./configure, generated by GNU Autoconf 2.61, with options \"'--disable-most-grades' '--enable-libgrades=java' '--with-default-grade=java'\" | ||||||||
Tags | No tags attached. | ||||||||
Attached Files |
|
Notes | |
juliensf (administrator) 2011-12-07 23:11 |
We appear to be calling the old constructor for the TypeInfo_Struct class (i.e. the one with the arity argument) from the initializer for some scalar common data. |
juliensf (administrator) 2011-12-12 03:03 Last edited: 2011-12-12 05:09 |
I've updated a reduced test case. The problem occurs because we generate the following: MR_scalar_common_1[1] = new jmercury.runtime.TypeInfo_Struct(jmercury.runtime.TypeInfo_Struct.maybe_new(builtin.builtin__type_ctor_info_func_0), 3, jmercury.runtime.TypeInfo_Struct.maybe_new(univ.univ__type_ctor_info_univ_0), jmercury.runtime.TypeInfo_Struct.maybe_new(bug245.MR_scalar_common_1[0]), jmercury.runtime.TypeInfo_Struct.maybe_new(bug245.bug245__type_ctor_info_doc_0)); The TypeInfo_Struct no longer takes an arity argument. There seems to be an issue with how rtti_to_mlds.m handles pseudo type-infos -- I've fixed that in my workspace and it makes no difference to this. (For the Java backend, psuedo type-infos reuse the TypeInfo_Struct class.) Does something other than rtti_to_mlds.m generate calls to the TypeInfo_Struct constructor? |
juliensf (administrator) 2011-12-12 17:21 |
The answer to the above is yes, ml_unify_gen.m also generates them (when processing unifications that involve type_info_cell_constructors). I will post a fix for this shortly. |
juliensf (administrator) 2011-12-13 03:23 |
Fix committed. |
Issue History | |||
Date Modified | Username | Field | Change |
---|---|---|---|
2011-12-07 22:19 | jfondren | New Issue | |
2011-12-07 22:36 | juliensf | Status | new => confirmed |
2011-12-07 23:11 | juliensf | Note Added: 0000434 | |
2011-12-12 02:59 | juliensf | File Added: bug245.m | |
2011-12-12 03:03 | juliensf | Note Added: 0000439 | |
2011-12-12 05:09 | juliensf | Note Edited: 0000439 | |
2011-12-12 17:21 | juliensf | Note Added: 0000440 | |
2011-12-12 17:29 | juliensf | Status | confirmed => assigned |
2011-12-12 17:29 | juliensf | Assigned To | => juliensf |
2011-12-13 03:23 | juliensf | Note Added: 0000441 | |
2011-12-13 03:23 | juliensf | Status | assigned => resolved |
2011-12-13 03:23 | juliensf | Resolution | open => fixed |