You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Ilya Leviev (JIRA)" <ji...@apache.org> on 2007/05/14 17:54:16 UTC
[jira] Created: (HARMONY-3855) [drlvm][jit] Known/proven race
conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
[drlvm][jit] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
--------------------------------------------------------------------------------------
Key: HARMONY-3855
URL: https://issues.apache.org/jira/browse/HARMONY-3855
Project: Harmony
Issue Type: Bug
Components: DRLVM
Reporter: Ilya Leviev
Priority: Minor
There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race.
Write ->Write data-race
Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
Stack Traces:
Context
Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
Function JIT_compile_method_with_params "drljitinterface.cpp":275
Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
1st Access
Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
Function JIT_compile_method_with_params "drljitinterface.cpp":275
Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
2nd Access
Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
Function JIT_compile_method_with_params "drljitinterface.cpp":275
Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
"" "121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
"0x1893E0" "122" "" " {"
"0x189416" "123" "" " assert(obj.jt() == jobj);"
"0x189437" "124" "" " if (obj.has(VA_NZ)) {"
"0x18944C" "125" "*" " STATS_INC(Stats::npesEliminated,1);"
"0x189481" "126" "" " if (is_set(DBG_TRACE_CG)) {"
"" "127" "" " dbg("";;>check.npe for %s - skipped\n"", "
"0x189495" "128" "" " to_str(obj.as_opnd()).c_str());"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (HARMONY-3855) [drlvm][jit] Known/proven race
conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
Posted by "Ilya Leviev (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilya Leviev updated HARMONY-3855:
---------------------------------
Description:
There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
As issues related to statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
Write ->Write data-race
Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
Stack Traces:
Context
Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
Function JIT_compile_method_with_params "drljitinterface.cpp":275
Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
1st Access
Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
Function JIT_compile_method_with_params "drljitinterface.cpp":275
Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
2nd Access
Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
Function JIT_compile_method_with_params "drljitinterface.cpp":275
Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
"121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
"122" "" " {"
"123" "" " assert(obj.jt() == jobj);"
"124" "" " if (obj.has(VA_NZ)) {"
"125" "*" " STATS_INC(Stats::npesEliminated,1);"
"126" "" " if (is_set(DBG_TRACE_CG)) {"
"127" "" " dbg("";;>check.npe for %s - skipped\n"", "
"128" "" " to_str(obj.as_opnd()).c_str());"
was:
There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race.
Write ->Write data-race
Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
Stack Traces:
Context
Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
Function JIT_compile_method_with_params "drljitinterface.cpp":275
Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
1st Access
Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
Function JIT_compile_method_with_params "drljitinterface.cpp":275
Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
2nd Access
Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
Function JIT_compile_method_with_params "drljitinterface.cpp":275
Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
"" "121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
"0x1893E0" "122" "" " {"
"0x189416" "123" "" " assert(obj.jt() == jobj);"
"0x189437" "124" "" " if (obj.has(VA_NZ)) {"
"0x18944C" "125" "*" " STATS_INC(Stats::npesEliminated,1);"
"0x189481" "126" "" " if (is_set(DBG_TRACE_CG)) {"
"" "127" "" " dbg("";;>check.npe for %s - skipped\n"", "
"0x189495" "128" "" " to_str(obj.as_opnd()).c_str());"
> [drlvm][jit] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
> --------------------------------------------------------------------------------------
>
> Key: HARMONY-3855
> URL: https://issues.apache.org/jira/browse/HARMONY-3855
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Priority: Minor
> Attachments: HARMONY-3855_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
> As issues related to statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write ->Write data-race
> Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
> Stack Traces:
> Context
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
> 1st Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> 2nd Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> "121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
> "122" "" " {"
> "123" "" " assert(obj.jt() == jobj);"
> "124" "" " if (obj.has(VA_NZ)) {"
> "125" "*" " STATS_INC(Stats::npesEliminated,1);"
> "126" "" " if (is_set(DBG_TRACE_CG)) {"
> "127" "" " dbg("";;>check.npe for %s - skipped\n"", "
> "128" "" " to_str(obj.as_opnd()).c_str());"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Assigned: (HARMONY-3855) [drlvm][jit][tc] Known/proven race
conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
Posted by "Mikhail Fursov (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mikhail Fursov reassigned HARMONY-3855:
---------------------------------------
Assignee: Mikhail Fursov (was: Alexey Varlamov)
> [drlvm][jit][tc] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
> ------------------------------------------------------------------------------------------
>
> Key: HARMONY-3855
> URL: https://issues.apache.org/jira/browse/HARMONY-3855
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Assignee: Mikhail Fursov
> Priority: Minor
> Attachments: HARMONY-3855_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
> As issues related to statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write ->Write data-race
> Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
> Stack Traces:
> Context
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
> 1st Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> 2nd Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> "121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
> "122" "" " {"
> "123" "" " assert(obj.jt() == jobj);"
> "124" "" " if (obj.has(VA_NZ)) {"
> "125" "*" " STATS_INC(Stats::npesEliminated,1);"
> "126" "" " if (is_set(DBG_TRACE_CG)) {"
> "127" "" " dbg("";;>check.npe for %s - skipped\n"", "
> "128" "" " to_str(obj.as_opnd()).c_str());"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Assigned: (HARMONY-3855) [drlvm][jit] Known/proven race
conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
Posted by "Alexey Varlamov (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexey Varlamov reassigned HARMONY-3855:
----------------------------------------
Assignee: Alexey Varlamov
> [drlvm][jit] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
> --------------------------------------------------------------------------------------
>
> Key: HARMONY-3855
> URL: https://issues.apache.org/jira/browse/HARMONY-3855
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Assignee: Alexey Varlamov
> Priority: Minor
> Attachments: HARMONY-3855_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
> As issues related to statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write ->Write data-race
> Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
> Stack Traces:
> Context
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
> 1st Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> 2nd Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> "121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
> "122" "" " {"
> "123" "" " assert(obj.jt() == jobj);"
> "124" "" " if (obj.has(VA_NZ)) {"
> "125" "*" " STATS_INC(Stats::npesEliminated,1);"
> "126" "" " if (is_set(DBG_TRACE_CG)) {"
> "127" "" " dbg("";;>check.npe for %s - skipped\n"", "
> "128" "" " to_str(obj.as_opnd()).c_str());"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Closed: (HARMONY-3855) [drlvm][jit][tc] Known/proven race
conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
Posted by "Ilya Leviev (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilya Leviev closed HARMONY-3855.
--------------------------------
Markup verified at r 557608.
Thank you for applying this patch.
> [drlvm][jit][tc] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
> ------------------------------------------------------------------------------------------
>
> Key: HARMONY-3855
> URL: https://issues.apache.org/jira/browse/HARMONY-3855
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Assignee: Mikhail Fursov
> Priority: Minor
> Attachments: HARMONY-3855_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
> As issues related to statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write ->Write data-race
> Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
> Stack Traces:
> Context
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
> 1st Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> 2nd Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> "121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
> "122" "" " {"
> "123" "" " assert(obj.jt() == jobj);"
> "124" "" " if (obj.has(VA_NZ)) {"
> "125" "*" " STATS_INC(Stats::npesEliminated,1);"
> "126" "" " if (is_set(DBG_TRACE_CG)) {"
> "127" "" " dbg("";;>check.npe for %s - skipped\n"", "
> "128" "" " to_str(obj.as_opnd()).c_str());"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (HARMONY-3855) [drlvm][jit][tc] Known/proven race
conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
Posted by "Ilya Leviev (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilya Leviev updated HARMONY-3855:
---------------------------------
Summary: [drlvm][jit][tc] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125) (was: [drlvm][jit] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125))
> [drlvm][jit][tc] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
> ------------------------------------------------------------------------------------------
>
> Key: HARMONY-3855
> URL: https://issues.apache.org/jira/browse/HARMONY-3855
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Assignee: Alexey Varlamov
> Priority: Minor
> Attachments: HARMONY-3855_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
> As issues related to statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write ->Write data-race
> Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
> Stack Traces:
> Context
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
> 1st Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> 2nd Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> "121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
> "122" "" " {"
> "123" "" " assert(obj.jt() == jobj);"
> "124" "" " if (obj.has(VA_NZ)) {"
> "125" "*" " STATS_INC(Stats::npesEliminated,1);"
> "126" "" " if (is_set(DBG_TRACE_CG)) {"
> "127" "" " dbg("";;>check.npe for %s - skipped\n"", "
> "128" "" " to_str(obj.as_opnd()).c_str());"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (HARMONY-3855) [drlvm][jit] Known/proven race
conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
Posted by "Ilya Leviev (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilya Leviev updated HARMONY-3855:
---------------------------------
Attachment: (was: HARMONY-3855_add_markup.patch)
> [drlvm][jit] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
> --------------------------------------------------------------------------------------
>
> Key: HARMONY-3855
> URL: https://issues.apache.org/jira/browse/HARMONY-3855
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Priority: Minor
> Attachments: HARMONY-3855_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
> As issues related to statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write ->Write data-race
> Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
> Stack Traces:
> Context
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
> 1st Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> 2nd Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> "121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
> "122" "" " {"
> "123" "" " assert(obj.jt() == jobj);"
> "124" "" " if (obj.has(VA_NZ)) {"
> "125" "*" " STATS_INC(Stats::npesEliminated,1);"
> "126" "" " if (is_set(DBG_TRACE_CG)) {"
> "127" "" " dbg("";;>check.npe for %s - skipped\n"", "
> "128" "" " to_str(obj.as_opnd()).c_str());"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (HARMONY-3855) [drlvm][jit] Known/proven race
conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
Posted by "Ilya Leviev (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilya Leviev updated HARMONY-3855:
---------------------------------
Attachment: HARMONY-3855_add_markup.patch
> [drlvm][jit] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
> --------------------------------------------------------------------------------------
>
> Key: HARMONY-3855
> URL: https://issues.apache.org/jira/browse/HARMONY-3855
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Priority: Minor
> Attachments: HARMONY-3855_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
> As issues related to statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write ->Write data-race
> Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
> Stack Traces:
> Context
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
> 1st Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> 2nd Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> "121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
> "122" "" " {"
> "123" "" " assert(obj.jt() == jobj);"
> "124" "" " if (obj.has(VA_NZ)) {"
> "125" "*" " STATS_INC(Stats::npesEliminated,1);"
> "126" "" " if (is_set(DBG_TRACE_CG)) {"
> "127" "" " dbg("";;>check.npe for %s - skipped\n"", "
> "128" "" " to_str(obj.as_opnd()).c_str());"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (HARMONY-3855) [drlvm][jit] Known/proven race
conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
Posted by "Ilya Leviev (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilya Leviev updated HARMONY-3855:
---------------------------------
Attachment: HARMONY-3855_add_markup.patch
> [drlvm][jit] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
> --------------------------------------------------------------------------------------
>
> Key: HARMONY-3855
> URL: https://issues.apache.org/jira/browse/HARMONY-3855
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Priority: Minor
> Attachments: HARMONY-3855_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
> If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race.
> Write ->Write data-race
> Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
> Stack Traces:
> Context
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
> 1st Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> 2nd Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> "" "121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
> "0x1893E0" "122" "" " {"
> "0x189416" "123" "" " assert(obj.jt() == jobj);"
> "0x189437" "124" "" " if (obj.has(VA_NZ)) {"
> "0x18944C" "125" "*" " STATS_INC(Stats::npesEliminated,1);"
> "0x189481" "126" "" " if (is_set(DBG_TRACE_CG)) {"
> "" "127" "" " dbg("";;>check.npe for %s - skipped\n"", "
> "0x189495" "128" "" " to_str(obj.as_opnd()).c_str());"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Resolved: (HARMONY-3855) [drlvm][jit][tc] Known/proven race
conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
Posted by "Mikhail Fursov (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mikhail Fursov resolved HARMONY-3855.
-------------------------------------
Resolution: Fixed
Committed as r556943
> [drlvm][jit][tc] Known/proven race conditions markup at \vm\jitrino\src\jet\cg.cpp (L:125)
> ------------------------------------------------------------------------------------------
>
> Key: HARMONY-3855
> URL: https://issues.apache.org/jira/browse/HARMONY-3855
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Assignee: Mikhail Fursov
> Priority: Minor
> Attachments: HARMONY-3855_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of gen_check_null function
> As issues related to statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write ->Write data-race
> Memory write at "cg.cpp":125 conflicts with a prior memory write at "cg.cpp":125 (output dependence)
> Stack Traces:
> Context
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":122
> 1st Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> 2nd Access
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":275
> Function enum JIT_Result Jitrino::Jet::compile_with_params(void *,void *,struct Method *,struct OpenMethodExecutionParams) "jet.cpp":524
> Function enum JIT_Result Jitrino::Jet::Compiler::compile(void *,struct Method *,struct OpenMethodExecutionParams const &) "compiler.cpp":389
> Function void Jitrino::Jet::Compiler::comp_gen_code_bb(unsigned int) "compiler.cpp":817
> Function bool Jitrino::Jet::Compiler::comp_gen_insts(unsigned int,unsigned int,unsigned int) "compiler.cpp":1023
> Function void Jitrino::Jet::Compiler::handle_inst(void) "bcproc.cpp":67
> Function void Jitrino::Jet::Compiler::handle_ik_meth(struct Jitrino::Jet::JInst const &) "bcproc.cpp":425
> Function void Jitrino::Jet::CodeGen::gen_invoke(enum JavaByteCodes,struct Method *,class std::vector<enum Jitrino::Jet::jtype,class std::allocator<enum Jitrino::Jet::jtype> > const &,enum Jitrino::Jet::jtype) "cg_meth.cpp":760
> Function void Jitrino::Jet::CodeGen::gen_check_null(class Jitrino::Jet::Val &,bool) "cg.cpp":125
> "121" "" " void CodeGen::gen_check_null(Val& obj, bool hw_ok)"
> "122" "" " {"
> "123" "" " assert(obj.jt() == jobj);"
> "124" "" " if (obj.has(VA_NZ)) {"
> "125" "*" " STATS_INC(Stats::npesEliminated,1);"
> "126" "" " if (is_set(DBG_TRACE_CG)) {"
> "127" "" " dbg("";;>check.npe for %s - skipped\n"", "
> "128" "" " to_str(obj.as_opnd()).c_str());"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.