diff --git a/infer/src/backend/InferPrint.ml b/infer/src/backend/InferPrint.ml index 24c7963a0..60fad3ed7 100644 --- a/infer/src/backend/InferPrint.ml +++ b/infer/src/backend/InferPrint.ml @@ -967,7 +967,9 @@ let pp_summary_and_issues formats_by_report_kind issue_formats = issue_formats ) (Issue.sort_filter_issues !all_issues) ; if Config.precondition_stats then PreconditionStats.pp_stats () ; - List.iter [Config.lint_issues_dir_name; Config.starvation_issues_dir_name] ~f:(fun dir_name -> + List.iter + [Config.lint_issues_dir_name; Config.starvation_issues_dir_name; Config.racerd_issues_dir_name] + ~f:(fun dir_name -> IssueLog.load dir_name ; IssueLog.iter (pp_lint_issues filters formats_by_report_kind linereader) ) ; finalize_and_close_files formats_by_report_kind stats diff --git a/infer/src/backend/reporting.ml b/infer/src/backend/reporting.ml index a31a47669..7ca69de2c 100644 --- a/infer/src/backend/reporting.ml +++ b/infer/src/backend/reporting.ml @@ -93,3 +93,10 @@ let log_warning_deprecated ?(store_summary= false) = let log_info_deprecated ?(store_summary= false) = log_issue_deprecated ~store_summary Exceptions.Kinfo + + +let log_issue_external procname ?clang_method_kind err_kind ?loc ?node_id ?session ?ltr + ?linters_def_file ?doc_url ?access exn = + let errlog = IssueLog.get_errlog procname in + log_issue_from_errlog procname ?clang_method_kind err_kind errlog ?loc ?node_id ?session ?ltr + ?linters_def_file ?doc_url ?access exn diff --git a/infer/src/backend/reporting.mli b/infer/src/backend/reporting.mli index 7319098b2..284eb4129 100644 --- a/infer/src/backend/reporting.mli +++ b/infer/src/backend/reporting.mli @@ -42,3 +42,8 @@ val log_error : Specs.summary -> log_t val log_warning : Specs.summary -> log_t (** Add an warning to the given summary. *) + +val log_issue_external : + Typ.Procname.t -> ?clang_method_kind:ProcAttributes.clang_method_kind -> Exceptions.err_kind + -> log_t +(** Log an issue to the error log in [IssueLog] associated with the given procname. *) diff --git a/infer/src/base/Config.ml b/infer/src/base/Config.ml index 00c21f03f..c80983896 100644 --- a/infer/src/base/Config.ml +++ b/infer/src/base/Config.ml @@ -259,6 +259,8 @@ let proc_stats_filename = "proc_stats.json" let property_attributes = "property_attributes" +let racerd_issues_dir_name = "racerd" + let report_condition_always_true_in_clang = false let report_json = "report.json" diff --git a/infer/src/base/Config.mli b/infer/src/base/Config.mli index 1b2eca208..224fb7a96 100644 --- a/infer/src/base/Config.mli +++ b/infer/src/base/Config.mli @@ -189,6 +189,8 @@ val procedures_source_file : bool val property_attributes : string +val racerd_issues_dir_name : string + val report : bool val report_condition_always_true_in_clang : bool diff --git a/infer/src/concurrency/RacerD.ml b/infer/src/concurrency/RacerD.ml index 2da7a5c36..c8cf39686 100644 --- a/infer/src/concurrency/RacerD.ml +++ b/infer/src/concurrency/RacerD.ml @@ -985,6 +985,10 @@ let get_contaminated_race_message access wobbly_paths = AccessPath.pp wobbly_path AccessPath.pp access_path ) +let log_issue current_pname ~loc ~ltr ~access exn = + Reporting.log_issue_external current_pname Exceptions.Kerror ~loc ~ltr ~access exn + + let report_thread_safety_violation tenv pdesc ~make_description ~report_kind access thread wobbly_paths = let open RacerDDomain in @@ -1029,7 +1033,7 @@ let report_thread_safety_violation tenv pdesc ~make_description ~report_kind acc in let end_locs = Option.to_list original_end @ Option.to_list conflict_end in let access = IssueAuxData.encode (pname, access, end_locs) in - Reporting.log_error_deprecated ~store_summary:true pname ~loc ~ltr ~access exn + log_issue pname ~loc ~ltr ~access exn in let trace_of_pname = trace_of_pname access pdesc in Option.iter ~f:report_one_path (PathDomain.get_reportable_sink_path access ~trace_of_pname) @@ -1530,7 +1534,7 @@ let aggregate_by_class file_env = (* Gathers results by analyzing all the methods in a file, then post-processes the results to check an (approximation of) thread safety *) -let file_analysis {Callbacks.procedures} = +let file_analysis {Callbacks.procedures; exe_env} = String.Map.iter ~f:(fun class_env -> let tenv = fst (List.hd_exn class_env) in @@ -1539,4 +1543,6 @@ let file_analysis {Callbacks.procedures} = ( if Tenv.language_is tenv Clang then (module SyntacticQuotientedAccessListMap) else (module MayAliasQuotientedAccessListMap) ) class_env) ) - (aggregate_by_class procedures) + (aggregate_by_class procedures) ; + let sourcefile = exe_env.Exe_env.source_file in + IssueLog.store Config.racerd_issues_dir_name sourcefile diff --git a/infer/src/concurrency/starvation.ml b/infer/src/concurrency/starvation.ml index 57c143dab..537f98784 100644 --- a/infer/src/concurrency/starvation.ml +++ b/infer/src/concurrency/starvation.ml @@ -157,8 +157,7 @@ let get_summaries_of_methods_in_class get_proc_desc tenv current_pdesc clazz = let log_issue current_pname current_loc ltr exn = - let errlog = IssueLog.get_errlog current_pname in - Reporting.log_issue_from_errlog current_pname Exceptions.Kerror errlog ~loc:current_loc ~ltr exn + Reporting.log_issue_external current_pname Exceptions.Kerror ~loc:current_loc ~ltr exn (* Note about how many times we report a deadlock: normally twice, at each trace starting point. diff --git a/infer/tests/build_systems/ant/issues.exp b/infer/tests/build_systems/ant/issues.exp index 8f31829c3..b960a4975 100644 --- a/infer/tests/build_systems/ant/issues.exp +++ b/infer/tests/build_systems/ant/issues.exp @@ -49,43 +49,45 @@ codetoanalyze/java/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLe codetoanalyze/java/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush(), 7, RESOURCE_LEAK, ERROR, [start of procedure gzipOutputStreamNotClosedAfterFlush(),exception java.io.IOException] codetoanalyze/java/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.inflaterOutputStreamNotClosedAfterWrite(), 8, RESOURCE_LEAK, ERROR, [start of procedure inflaterOutputStreamNotClosedAfterWrite(),exception java.io.IOException] codetoanalyze/java/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.printStreamNotClosedAfterWrite(), 6, RESOURCE_LEAK, ERROR, [start of procedure printStreamNotClosedAfterWrite()] -codetoanalyze/java/infer/GuardedByExample.java, Object GuardedByExample.byRefTrickyBad(), 5, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.g`,,access to `this.codetoanalyze.java.infer.GuardedByExample.g`] codetoanalyze/java/infer/GuardedByExample.java, Object GuardedByExample.byRefTrickyBad(), 5, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure byRefTrickyBad()] +codetoanalyze/java/infer/GuardedByExample.java, Object GuardedByExample.byRefTrickyBad(), 288, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.g`,,access to `this.codetoanalyze.java.infer.GuardedByExample.g`] codetoanalyze/java/infer/GuardedByExample.java, String GuardedByExample$3.readFromInnerClassBad1(), 2, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure readFromInnerClassBad1()] codetoanalyze/java/infer/GuardedByExample.java, String GuardedByExample$4.readFromInnerClassBad2(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure readFromInnerClassBad2()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample$Sub.badSub(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.xForSub`,,access to `this.codetoanalyze.java.infer.GuardedByExample.xForSub`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample$Sub.badSub(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure badSub()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.badGuardedByNormalLock(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedbynl`,,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedbynl`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample$Sub.badSub(), 495, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.xForSub`,,access to `this.codetoanalyze.java.infer.GuardedByExample.xForSub`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.badGuardedByNormalLock(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure badGuardedByNormalLock()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.badGuardedByReentrantLock(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedbyrel`,,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedbyrel`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.badGuardedByNormalLock(), 532, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedbynl`,,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedbynl`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.badGuardedByReentrantLock(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure badGuardedByReentrantLock()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.guardedByTypeSyntaxBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedByLock1`,,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedByLock1`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.badGuardedByReentrantLock(), 536, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedbyrel`,,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedbyrel`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.guardedByTypeSyntaxBad(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure guardedByTypeSyntaxBad()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.guardedByTypeSyntaxBad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedByLock2`,,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedByLock2`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.guardedByTypeSyntaxBad(), 2, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure guardedByTypeSyntaxBad()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFAfterBlockBad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.guardedByTypeSyntaxBad(), 579, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedByLock1`,,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedByLock1`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.guardedByTypeSyntaxBad(), 580, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedByLock2`,,access to `this.codetoanalyze.java.infer.GuardedByExample.guardedByLock2`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFAfterBlockBad(), 3, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure readFAfterBlockBad()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFAfterBlockBad(), 105, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFBad(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure readFBad()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFBadWrongAnnotation(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFBad(), 73, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFBadButSuppressed(), 78, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFBadButSuppressedOther(), 83, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFBadWrongAnnotation(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure readFBadWrongAnnotation()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFBadWrongLock(), 2, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFBadWrongAnnotation(), 116, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFBadWrongLock(), 2, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure readFBadWrongLock()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFOkMethodAnnotated(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFOkSynchronized(), 2, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readGFromCopyOk(), 5, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.mCopyOfG`,,access to `this.codetoanalyze.java.infer.GuardedByExample.mCopyOfG`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFBadWrongLock(), 92, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFOkMethodAnnotated(), 121, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readFOkSynchronized(), 134, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readGFromCopyOk(), 274, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.mCopyOfG`,,access to `this.codetoanalyze.java.infer.GuardedByExample.mCopyOfG`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readHBad(), 2, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure readHBad()] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.readHBadSynchronizedMethodShouldntHelp(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure readHBadSynchronizedMethodShouldntHelp()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.reassignCopyOk(), 4, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.infer.GuardedByExample.mCopyOfG`] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.synchronizedMethodReadBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.reassignCopyOk(), 156, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.infer.GuardedByExample.mCopyOfG`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.synchronizedMethodReadBad(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure synchronizedMethodReadBad()] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.synchronizedMethodReadBad(), 145, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.synchronizedMethodWriteBad(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure synchronizedMethodWriteBad()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.synchronizedOnThisBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `infer.GuardedByExample.codetoanalyze.java.infer.GuardedByExample.sGuardedByClass`,,access to `infer.GuardedByExample.codetoanalyze.java.infer.GuardedByExample.sGuardedByClass`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.synchronizedOnThisBad(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure synchronizedOnThisBad()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.writeFAfterBlockBad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.synchronizedOnThisBad(), 212, THREAD_SAFETY_VIOLATION, ERROR, [,access to `infer.GuardedByExample.codetoanalyze.java.infer.GuardedByExample.sGuardedByClass`,,access to `infer.GuardedByExample.codetoanalyze.java.infer.GuardedByExample.sGuardedByClass`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.writeFAfterBlockBad(), 3, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure writeFAfterBlockBad()] -codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.writeFBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.writeFAfterBlockBad(), 111, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.infer.GuardedByExample.f`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.writeFBad(), 1, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure writeFBad()] +codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.writeFBad(), 87, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.infer.GuardedByExample.f`,,access to `this.codetoanalyze.java.infer.GuardedByExample.f`] codetoanalyze/java/infer/GuardedByExample.java, void GuardedByExample.writeFBadWrongLock(), 2, UNSAFE_GUARDED_BY_ACCESS, ERROR, [start of procedure writeFBadWrongLock()] codetoanalyze/java/infer/HashMapExample.java, int HashMapExample.getOneIntegerWithoutCheck(), 6, NULL_DEREFERENCE, ERROR, [start of procedure getOneIntegerWithoutCheck()] codetoanalyze/java/infer/HashMapExample.java, void HashMapExample.getAfterClearBad(), 5, NULL_DEREFERENCE, ERROR, [start of procedure getAfterClearBad()] diff --git a/infer/tests/codetoanalyze/cpp/racerd/issues.exp b/infer/tests/codetoanalyze/cpp/racerd/issues.exp index 95bf8a710..0d7c6deca 100644 --- a/infer/tests/codetoanalyze/cpp/racerd/issues.exp +++ b/infer/tests/codetoanalyze/cpp/racerd/issues.exp @@ -1,27 +1,27 @@ -codetoanalyze/cpp/racerd/basics.cpp, basics::Basic_get2, 3, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_written`,,access to `this.suspiciously_written`] -codetoanalyze/cpp/racerd/basics.cpp, basics::Basic_get4, 0, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read`,,access to `this.suspiciously_read`] -codetoanalyze/cpp/racerd/basics.cpp, basics::Basic_get5, 0, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to basics::Basic_get_private_suspiciously_read,access to `this.suspiciously_read`,,access to `this.suspiciously_read`] -codetoanalyze/cpp/racerd/basics.cpp, basics::Basic_test_double_lock_bad, 0, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.single_lock_suspiciously_read`,,access to `this.single_lock_suspiciously_read`] -codetoanalyze/cpp/racerd/constructor_ownership.cpp, constructors::TSL_not_locked_race, 0, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to constructors::BSS_toJson_race,call to constructors::dynamic_operator=,access to `this.type_`,,call to constructors::BSS_toJson_race,call to constructors::dynamic_operator=,access to `this.type_`] -codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_call1, 5, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.u`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.u`] -codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_call1, 5, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.w`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.w`] -codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_call1, 5, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x2.a.b.c`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x2.a.b.c`] -codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_test_unlock, 0, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x2.a.b.c`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x2.a.b.c`] -codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_test_unlock, 0, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.w`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.w`] -codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_test_unlock, 0, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.u`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.u`] -codetoanalyze/cpp/racerd/locals_ownership.cpp, locals::Ownership_test2_bad, 5, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `x.f`,,access to `x.f`] -codetoanalyze/cpp/racerd/locals_ownership.cpp, locals::Ownership_test3_bad, 5, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `x.f`,,access to `x.f`] -codetoanalyze/cpp/racerd/lock_guard.cpp, basics::LockGuard_get2, 3, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_written`,,access to `this.suspiciously_written`] -codetoanalyze/cpp/racerd/lock_guard.cpp, basics::LockGuard_get4, 0, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read`,,access to `this.suspiciously_read`] -codetoanalyze/cpp/racerd/lock_guard.cpp, basics::LockGuard_test1, 2, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read`,,access to `this.suspiciously_read`] -codetoanalyze/cpp/racerd/lock_guard_with_scope.cpp, basics::LockGuardWithScope_get2, 3, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_written`,,access to `this.suspiciously_written`] -codetoanalyze/cpp/racerd/lock_guard_with_scope.cpp, basics::LockGuardWithScope_get4, 0, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read`,,access to `this.suspiciously_read`] -codetoanalyze/cpp/racerd/reporting.cpp, reporting::Basic_call1, 1, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to reporting::Basic_test,access to `xparam.x1.w`,,call to reporting::Basic_call1,call to reporting::Basic_test,access to `xparam.x1.w`] -codetoanalyze/cpp/racerd/reporting.cpp, reporting::Basic_test_unlock, 0, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to reporting::Basic_call1,call to reporting::Basic_test,access to `xparam.x1.w`,,call to reporting::Basic_call1,call to reporting::Basic_test,access to `xparam.x1.w`] -codetoanalyze/cpp/racerd/std_lock.cpp, basics::StdLock_get_bad, 0, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.not_guarded`,,access to `this.not_guarded`] -codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get2, 3, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_written1`,,access to `this.suspiciously_written1`] -codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get2, 4, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_written2`,,access to `this.suspiciously_written2`] -codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get4, 1, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read1`,,access to `this.suspiciously_read1`] -codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get4, 2, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read2`,,access to `this.suspiciously_read2`] -codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get5, 5, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read1`,,access to `this.suspiciously_read1`] -codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get6, 5, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read1`,,access to `this.suspiciously_read1`] +codetoanalyze/cpp/racerd/basics.cpp, basics::Basic_get2, 38, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_written`,,access to `this.suspiciously_written`] +codetoanalyze/cpp/racerd/basics.cpp, basics::Basic_get4, 45, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read`,,access to `this.suspiciously_read`] +codetoanalyze/cpp/racerd/basics.cpp, basics::Basic_get5, 47, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to basics::Basic_get_private_suspiciously_read,access to `this.suspiciously_read`,,access to `this.suspiciously_read`] +codetoanalyze/cpp/racerd/basics.cpp, basics::Basic_test_double_lock_bad, 83, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.single_lock_suspiciously_read`,,access to `this.single_lock_suspiciously_read`] +codetoanalyze/cpp/racerd/constructor_ownership.cpp, constructors::TSL_not_locked_race, 82, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to constructors::BSS_toJson_race,call to constructors::dynamic_operator=,access to `this.type_`,,call to constructors::BSS_toJson_race,call to constructors::dynamic_operator=,access to `this.type_`] +codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_call1, 53, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.u`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.u`] +codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_call1, 53, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.w`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.w`] +codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_call1, 53, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x2.a.b.c`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x2.a.b.c`] +codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_test_unlock, 61, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x2.a.b.c`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x2.a.b.c`] +codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_test_unlock, 61, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.w`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.w`] +codetoanalyze/cpp/racerd/dereferencing.cpp, dereferencing::Basic_test_unlock, 61, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.u`,,call to dereferencing::Basic_call1,call to dereferencing::Basic_mixed_deref_race,access to `xparam.x1.u`] +codetoanalyze/cpp/racerd/locals_ownership.cpp, locals::Ownership_test2_bad, 51, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `x.f`,,access to `x.f`] +codetoanalyze/cpp/racerd/locals_ownership.cpp, locals::Ownership_test3_bad, 67, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `x.f`,,access to `x.f`] +codetoanalyze/cpp/racerd/lock_guard.cpp, basics::LockGuard_get2, 36, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_written`,,access to `this.suspiciously_written`] +codetoanalyze/cpp/racerd/lock_guard.cpp, basics::LockGuard_get4, 42, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read`,,access to `this.suspiciously_read`] +codetoanalyze/cpp/racerd/lock_guard.cpp, basics::LockGuard_test1, 46, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read`,,access to `this.suspiciously_read`] +codetoanalyze/cpp/racerd/lock_guard_with_scope.cpp, basics::LockGuardWithScope_get2, 39, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_written`,,access to `this.suspiciously_written`] +codetoanalyze/cpp/racerd/lock_guard_with_scope.cpp, basics::LockGuardWithScope_get4, 45, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read`,,access to `this.suspiciously_read`] +codetoanalyze/cpp/racerd/reporting.cpp, reporting::Basic_call1, 26, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to reporting::Basic_test,access to `xparam.x1.w`,,call to reporting::Basic_call1,call to reporting::Basic_test,access to `xparam.x1.w`] +codetoanalyze/cpp/racerd/reporting.cpp, reporting::Basic_test_unlock, 34, LOCK_CONSISTENCY_VIOLATION, ERROR, [,call to reporting::Basic_call1,call to reporting::Basic_test,access to `xparam.x1.w`,,call to reporting::Basic_call1,call to reporting::Basic_test,access to `xparam.x1.w`] +codetoanalyze/cpp/racerd/std_lock.cpp, basics::StdLock_get_bad, 33, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.not_guarded`,,access to `this.not_guarded`] +codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get2, 47, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_written1`,,access to `this.suspiciously_written1`] +codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get2, 48, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_written2`,,access to `this.suspiciously_written2`] +codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get4, 57, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read1`,,access to `this.suspiciously_read1`] +codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get4, 58, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read2`,,access to `this.suspiciously_read2`] +codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get5, 66, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read1`,,access to `this.suspiciously_read1`] +codetoanalyze/cpp/racerd/unique_lock.cpp, basics::UniqueLock_get6, 75, LOCK_CONSISTENCY_VIOLATION, ERROR, [,access to `this.suspiciously_read1`,,access to `this.suspiciously_read1`] diff --git a/infer/tests/codetoanalyze/java/racerd/issues.exp b/infer/tests/codetoanalyze/java/racerd/issues.exp index 9effe24f6..3fa92f382 100644 --- a/infer/tests/codetoanalyze/java/racerd/issues.exp +++ b/infer/tests/codetoanalyze/java/racerd/issues.exp @@ -1,130 +1,130 @@ -codetoanalyze/java/racerd/AndroidModels.java, void AndroidModels.someResourceMethodsNotFunctionalBad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.AndroidModels.mField`] -codetoanalyze/java/racerd/Annotations.java, boolean Annotations.FP_functionalAcrossUnboxingOk(), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mBool2`] -codetoanalyze/java/racerd/Annotations.java, double Annotations.functionalDoubleBad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mDouble`] -codetoanalyze/java/racerd/Annotations.java, int Annotations.FP_functionalAcrossBoxingLongOk(), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mBoxedLong2`] -codetoanalyze/java/racerd/Annotations.java, int Annotations.functionalAcrossUnboxingLongBad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mLong2`] -codetoanalyze/java/racerd/Annotations.java, long Annotations.functionaLongBad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mLong`] -codetoanalyze/java/racerd/Annotations.java, void Annotations.conditional2_bad(boolean), 5, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.ii`] -codetoanalyze/java/racerd/Annotations.java, void Annotations.functionalAndNonfunctionalBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mInt`] -codetoanalyze/java/racerd/Annotations.java, void Annotations.mutateOffUiThreadBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.f`] -codetoanalyze/java/racerd/Annotations.java, void Annotations.mutateSubfieldOfConfinedBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.encapsulatedField.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Annotations.java, void Annotations.read_from_non_confined_method_Bad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Annotations.zz`,,access to `this.codetoanalyze.java.checkers.Annotations.zz`] -codetoanalyze/java/racerd/Annotations.java, void Annotations.read_off_UI_thread_Bad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Annotations.f`,,access to `this.codetoanalyze.java.checkers.Annotations.f`] -codetoanalyze/java/racerd/Annotations.java, void ThreadSafeAlias.threadSafeAliasBad1(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeAlias.field`] -codetoanalyze/java/racerd/Annotations.java, void ThreadSafeAlias.threadSafeAliasBad2(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeAlias.field`] -codetoanalyze/java/racerd/Arrays.java, String Arrays.readWriteRaceBad(String), 4, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.Arrays.strArr1.[_]`,,access to `this.Arrays.strArr1.[_]`] -codetoanalyze/java/racerd/Arrays.java, void Arrays.arrayParameterWriteBad(int[]), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `name1.[_]`] -codetoanalyze/java/racerd/Arrays.java, void Arrays.writeWriteRaceBad(String), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.Arrays.strArr1.[_]`] -codetoanalyze/java/racerd/Builders.java, Builders$Obj Builders.buildThenMutateBad(Builders$Obj), 2, THREAD_SAFETY_VIOLATION, ERROR, [,call to Builders$Obj$Builder Builders$Obj$Builder.setFromObj(Builders$Obj),access to `input.codetoanalyze.java.checkers.Builders$Obj.g`,,access to `input.codetoanalyze.java.checkers.Builders$Obj.g`] -codetoanalyze/java/racerd/Builders.java, Builders$Obj Builders.buildThenMutateBad(Builders$Obj), 3, THREAD_SAFETY_VIOLATION, ERROR, [access to `input.codetoanalyze.java.checkers.Builders$Obj.g`] -codetoanalyze/java/racerd/Builders.java, Builders$Obj Builders.mutateBad(Builders$Obj), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `o.codetoanalyze.java.checkers.Builders$Obj.g`] -codetoanalyze/java/racerd/Builders.java, void TopLevelBuilder.setG(String), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.TopLevelBuilder.g`] -codetoanalyze/java/racerd/Constructors.java, Constructors Constructors.FP_singleton2Ok(), 6, THREAD_SAFETY_VIOLATION, ERROR, [,access to `Constructors.Constructors.sSingleton1`,,access to `Constructors.Constructors.sSingleton1`] -codetoanalyze/java/racerd/Constructors.java, Constructors Constructors.singleton1Bad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [call to Constructors.(Object),access to `Constructors.Constructors.staticField`] -codetoanalyze/java/racerd/Constructors.java, Constructors Constructors.singleton2Bad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `Constructors.Constructors.sSingleton2`,,access to `Constructors.Constructors.sSingleton2`] -codetoanalyze/java/racerd/Constructors.java, Constructors Constructors.singleton2Bad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `Constructors.Constructors.sSingleton2`] -codetoanalyze/java/racerd/Constructors.java, Constructors Constructors.singleton2Bad(), 4, THREAD_SAFETY_VIOLATION, ERROR, [,access to `Constructors.Constructors.sSingleton2`,,access to `Constructors.Constructors.sSingleton2`] -codetoanalyze/java/racerd/Constructors.java, Constructors.(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `Constructors.Constructors.staticField`] -codetoanalyze/java/racerd/Constructors.java, Constructors.(Constructors), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `o.Constructors.field`] -codetoanalyze/java/racerd/Containers.java, boolean Containers.listReadBad(String), 1, THREAD_SAFETY_VIOLATION, ERROR, [,Read of container `this.codetoanalyze.java.checkers.Containers.mList` via call to `contains`,,Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `set`] -codetoanalyze/java/racerd/Containers.java, int Containers.readSimpleArrayMap(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,Read of container `this.codetoanalyze.java.checkers.Containers.si_map` via call to `get`,,Write to container `this.codetoanalyze.java.checkers.Containers.si_map` via call to `put`] -codetoanalyze/java/racerd/Containers.java, void Containers.addToSimpleArrayMapBad(SimpleArrayMap), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `map` via call to `put`] -codetoanalyze/java/racerd/Containers.java, void Containers.addToSparseArrayBad(SparseArray), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `sparseArray` via call to `put`] -codetoanalyze/java/racerd/Containers.java, void Containers.addToSparseArrayCompatBad(SparseArrayCompat), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `sparseArray` via call to `put`] -codetoanalyze/java/racerd/Containers.java, void Containers.containerWrapperUnownedWriteBad(Object), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to Object ContainerWrapper.write(Object),call to Object ContainerWrapper._write(Object),Write to container `this.codetoanalyze.java.checkers.ContainerWrapper.children` via call to `add`] -codetoanalyze/java/racerd/Containers.java, void Containers.listAddAllBad(Collection), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `addAll`] -codetoanalyze/java/racerd/Containers.java, void Containers.listAddBad1(String), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `add`] -codetoanalyze/java/racerd/Containers.java, void Containers.listAddBad2(int,String), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `add`] -codetoanalyze/java/racerd/Containers.java, void Containers.listClearBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `clear`] -codetoanalyze/java/racerd/Containers.java, void Containers.listRemoveBad1(int), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `remove`] -codetoanalyze/java/racerd/Containers.java, void Containers.listRemoveBad2(String), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `remove`] -codetoanalyze/java/racerd/Containers.java, void Containers.listSetBad(int,String), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `set`] -codetoanalyze/java/racerd/Containers.java, void Containers.listSubclassWriteBad(ArrayList,int), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `list` via call to `remove`] -codetoanalyze/java/racerd/Containers.java, void Containers.mapClearBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mMap` via call to `clear`] -codetoanalyze/java/racerd/Containers.java, void Containers.mapPutAllBad(Map), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mMap` via call to `putAll`] -codetoanalyze/java/racerd/Containers.java, void Containers.mapPutBad(String,String), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mMap` via call to `put`] -codetoanalyze/java/racerd/Containers.java, void Containers.mapRemoveBad(String), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mMap` via call to `remove`] -codetoanalyze/java/racerd/Containers.java, void Containers.mapSubclassWriteBad(HashMap,String), 1, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `m` via call to `remove`] -codetoanalyze/java/racerd/Containers.java, void Containers.poolBad(), 5, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.simplePool` via call to `release`] -codetoanalyze/java/racerd/DeepOwnership.java, void DeepOwnership.globalNotOwnedBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `DeepOwnership.DeepOwnership.global.DeepOwnership.next`] -codetoanalyze/java/racerd/DeepOwnership.java, void DeepOwnership.reassignBaseToGlobalBad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [access to `x.DeepOwnership.next`] -codetoanalyze/java/racerd/Dispatch.java, void Dispatch.callUnannotatedInterfaceBad(UnannotatedInterface), 1, INTERFACE_NOT_THREAD_SAFE, ERROR, [Call to un-annotated interface method void UnannotatedInterface.foo()] -codetoanalyze/java/racerd/Dispatch.java, void Dispatch.callUnannotatedInterfaceIndirectBad(NotThreadSafe,UnannotatedInterface), 1, INTERFACE_NOT_THREAD_SAFE, ERROR, [call to void NotThreadSafe.notThreadSafeOk(UnannotatedInterface),Call to un-annotated interface method void UnannotatedInterface.foo()] -codetoanalyze/java/racerd/Dispatch.java, void ThreadConfinedField.interfaceCallOnNormalFieldBad(), 1, INTERFACE_NOT_THREAD_SAFE, ERROR, [Call to un-annotated interface method void UnannotatedInterface.foo()] -codetoanalyze/java/racerd/Inference.java, int Inference.read4OutsideSyncBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Inference.mField4`,,access to `this.codetoanalyze.java.checkers.Inference.mField4`] -codetoanalyze/java/racerd/Inference.java, int Inference.unprotectedRead1Bad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Inference.mField1`,,access to `this.codetoanalyze.java.checkers.Inference.mField1`] -codetoanalyze/java/racerd/Inference.java, int Inference.unprotectedRead2Bad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Inference.mField2`,,access to `this.codetoanalyze.java.checkers.Inference.mField2`] -codetoanalyze/java/racerd/Locks.java, Object Locks.unownedReadBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Locks.mField3`,,call to void Locks.lockedWriteInCallee2(),access to `this.codetoanalyze.java.checkers.Locks.mField3`] -codetoanalyze/java/racerd/Locks.java, boolean Locks.readOutsideLock1Bad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Locks.mField`,,access to `this.codetoanalyze.java.checkers.Locks.mField`] -codetoanalyze/java/racerd/Locks.java, boolean Locks.readOutsideLock2Bad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Locks.mField`,,access to `this.codetoanalyze.java.checkers.Locks.mField`] -codetoanalyze/java/racerd/Locks.java, void Locks.afterReentrantLockUnlockBad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] -codetoanalyze/java/racerd/Locks.java, void Locks.afterUnlockBad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] -codetoanalyze/java/racerd/Locks.java, void Locks.afterWriteLockUnlockBad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] -codetoanalyze/java/racerd/Locks.java, void Locks.lockInLoopLexicalBad(int), 6, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] -codetoanalyze/java/racerd/Locks.java, void Locks.negatedReentrantLockTryLockBad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] -codetoanalyze/java/racerd/Locks.java, void Locks.nested1Bad(), 5, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] -codetoanalyze/java/racerd/Locks.java, void Locks.nested2Bad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] -codetoanalyze/java/racerd/Locks.java, void Locks.nested3Bad(), 5, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] -codetoanalyze/java/racerd/Locks.java, void Locks.tryLockNoCheckBad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] -codetoanalyze/java/racerd/Locks.java, void Locks.tryLockWrongBranchBad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] -codetoanalyze/java/racerd/Locks.java, void Locks.useLockInCalleeBad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] -codetoanalyze/java/racerd/Ownership.java, Ownership.(Obj,Object), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `obj.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Ownership.java, int Ownership.readGlobalBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `checkers.Ownership.codetoanalyze.java.checkers.Ownership.global`,,access to `checkers.Ownership.codetoanalyze.java.checkers.Ownership.global`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.cantOwnThisBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.setField(Obj),access to `this.codetoanalyze.java.checkers.Ownership.field`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.castThenCallBad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.castThenCall(Obj),call to void Subclass.doWrite(),access to `this.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.castThenReturnBad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `n$5.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.conditionalAliasBad(Obj), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.conditionalAlias(Obj,Obj),access to `alias.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.notOwnedInCalleeBad(Obj), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.mutateIfNotNull(Obj),access to `o.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.notPropagatingOwnershipToAccessPathRootedAtFormalBad(Obj), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `m.codetoanalyze.java.checkers.Obj.g`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.notPropagatingOwnershipToUnownedLocalAccessPathBad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Ownership.field`,,call to void Ownership.setField(Obj),access to `this.codetoanalyze.java.checkers.Ownership.field`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.notPropagatingOwnershipToUnownedLocalAccessPathBad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [access to `m.codetoanalyze.java.checkers.Obj.g`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.ownInOneBranchBad(Obj,boolean), 5, THREAD_SAFETY_VIOLATION, ERROR, [access to `formal.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.reassignParamToUnownedBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.reassignParamToUnowned(Obj),access to `o.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.reassignToFormalBad(Obj), 2, THREAD_SAFETY_VIOLATION, ERROR, [access to `formal.codetoanalyze.java.checkers.Obj.g`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.reassignToFormalBad(Obj), 3, THREAD_SAFETY_VIOLATION, ERROR, [access to `formal.codetoanalyze.java.checkers.Obj.g.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.reassignToFormalBad(Obj), 3, THREAD_SAFETY_VIOLATION, ERROR, [,access to `formal.codetoanalyze.java.checkers.Obj.g`,,access to `formal.codetoanalyze.java.checkers.Obj.g`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.writeToNotOwnedInCalleeBad1(Obj), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.writeToFormal(Obj),access to `formal.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.writeToNotOwnedInCalleeBad2(), 2, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.writeToFormal(Obj),access to `formal.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.writeToNotOwnedInCalleeBad3(Obj), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.callWriteToFormal(Obj),call to void Ownership.writeToFormal(Obj),access to `formal.codetoanalyze.java.checkers.Obj.f`] -codetoanalyze/java/racerd/Ownership.java, void Ownership.writeToOwnedInCalleeOk2(), 4, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Ownership.field`,,access to `this.codetoanalyze.java.checkers.Ownership.field`] -codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.conditional2_bad(boolean), 6, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.ff`] -codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.conditionalMainThreadWriteBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to void RaceWithMainThread.conditionalMainThreadWrite2(boolean),access to `this.codetoanalyze.java.checkers.RaceWithMainThread.mOnlyWrittenOnMain`] -codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.conditional_isMainThread_ElseBranch_Bad(), 7, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.ff`] -codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.conditional_isMainThread_Negation_Bad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.ff`] -codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.conditional_isUiThread_ElseBranch_Bad(), 7, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.ff`] -codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.confusedAssertBad(boolean), 7, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.mFld`] -codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.readProtectedUnthreadedBad(), 3, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f`,,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f`] -codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.read_unprotected_unthreaded1_Bad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f1`,,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f1`] -codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.read_unprotected_unthreaded_Bad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f`,,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f`] -codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.writeAfterConditionalMainThreadInCalleeBad(), 4, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.mSharedField`] -codetoanalyze/java/racerd/ReadWriteRaces.java, Object ReadWriteRaces.callUnprotecteReadInCallee(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,call to Object ReadWriteRaces.unprotectedReadInCallee(),access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field1`,,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field1`] -codetoanalyze/java/racerd/ReadWriteRaces.java, Object ReadWriteRaces.unprotectedRead1(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field1`,,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field1`] -codetoanalyze/java/racerd/ReadWriteRaces.java, Object ReadWriteRaces.unprotectedRead2(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field2`,,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field2`] -codetoanalyze/java/racerd/ReadWriteRaces.java, Object ReadWriteRaces.unprotectedRead3(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field3`,,call to void ReadWriteRaces.syncWrite3(),access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field3`] -codetoanalyze/java/racerd/ReadWriteRaces.java, void ReadWriteRaces.m1(), 2, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.racy`,,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.racy`] -codetoanalyze/java/racerd/ReadWriteRaces.java, void ReadWriteRaces.m2(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ReadWriteRaces.racy`] -codetoanalyze/java/racerd/ReadWriteRaces.java, void ReadWriteRaces.m3(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ReadWriteRaces.racy`] -codetoanalyze/java/racerd/ReadWriteRaces.java, void ReadWriteRaces.readInCalleeOutsideSyncBad(int), 1, THREAD_SAFETY_VIOLATION, ERROR, [,call to int C.get(),access to `this.codetoanalyze.java.checkers.C.x`,,call to void C.set(int),access to `this.codetoanalyze.java.checkers.C.x`] -codetoanalyze/java/racerd/SubFld.java, int SubFld.getG(), 6, THREAD_SAFETY_VIOLATION, ERROR, [,call to int SuperFld.getG(),access to `this.SuperFld.g`,,access to `this.SuperFld.g`] -codetoanalyze/java/racerd/ThreadSafeExample.java, Object ThreadSafeExample.FP_lazyInitOk(), 6, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeExample.sStaticField`,,access to `this.codetoanalyze.java.checkers.ThreadSafeExample.sStaticField`] -codetoanalyze/java/racerd/ThreadSafeExample.java, void ExtendsThreadSafeExample.newmethodBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ExtendsThreadSafeExample.field`] -codetoanalyze/java/racerd/ThreadSafeExample.java, void ExtendsThreadSafeExample.tsOK(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ExtendsThreadSafeExample.field`] -codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.callPublicMethodBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to void ThreadSafeExample.assignInPrivateMethodOk(),access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] -codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.callVisibleForTestingBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to void ThreadSafeExample.visibleForTestingNotPublicOk(),access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] -codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.deeperTraceBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to void ThreadSafeExample.callAssignInPrivateMethod(),call to void ThreadSafeExample.assignInPrivateMethodOk(),access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] -codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.oddBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [call to void ThreadSafeExample.evenOk(),access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] -codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.recursiveBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] -codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.tsBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] -codetoanalyze/java/racerd/ThreadSafeExample.java, void YesThreadSafeExtendsNotThreadSafeExample.subsubmethodBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.YesThreadSafeExtendsNotThreadSafeExample.subsubfield`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, Object ThreadSafeMethods.readSameFieldAsThreadSafeMethod1Bad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, Object ThreadSafeMethods.readSameFieldAsThreadSafeMethod2Bad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field4`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field4`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, Object ThreadSafeMethods.readSameFieldAsThreadSafeMethodWhileSynchronized1Bad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, Object ThreadSafeMethods.threadSafeMethodReadBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field2`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field2`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, Object ThreadSafeMethodsSubclass.readThreadSafeFieldOfOverrideBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethodsSubclass.subclassField`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethodsSubclass.subclassField`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethods.threadSafeMethodWriteBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethods.threadSafePrivateMethodBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field2`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethods.threadSafeVisibleForTestingMethodBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field3`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethods.writeSameFieldAsThreadSafeMethod1Bad(), 2, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethods.writeSameFieldAsThreadSafeMethod2Bad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field4`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field4`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethodsSubclass.safeMethodOverride(), 1, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeMethodsSubclass.subclassField`] -codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethodsSubclass.writeThreadSafeFieldOfOverrideBad(), 1, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethodsSubclass.subclassField`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethodsSubclass.subclassField`] +codetoanalyze/java/racerd/AndroidModels.java, void AndroidModels.someResourceMethodsNotFunctionalBad(), 65, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.AndroidModels.mField`] +codetoanalyze/java/racerd/Annotations.java, boolean Annotations.FP_functionalAcrossUnboxingOk(), 310, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mBool2`] +codetoanalyze/java/racerd/Annotations.java, double Annotations.functionalDoubleBad(), 278, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mDouble`] +codetoanalyze/java/racerd/Annotations.java, int Annotations.FP_functionalAcrossBoxingLongOk(), 339, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mBoxedLong2`] +codetoanalyze/java/racerd/Annotations.java, int Annotations.functionalAcrossUnboxingLongBad(), 330, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mLong2`] +codetoanalyze/java/racerd/Annotations.java, long Annotations.functionaLongBad(), 286, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mLong`] +codetoanalyze/java/racerd/Annotations.java, void Annotations.conditional2_bad(boolean), 190, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.ii`] +codetoanalyze/java/racerd/Annotations.java, void Annotations.functionalAndNonfunctionalBad(), 373, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.mInt`] +codetoanalyze/java/racerd/Annotations.java, void Annotations.mutateOffUiThreadBad(), 116, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.f`] +codetoanalyze/java/racerd/Annotations.java, void Annotations.mutateSubfieldOfConfinedBad(), 155, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Annotations.encapsulatedField.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Annotations.java, void Annotations.read_from_non_confined_method_Bad(), 168, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Annotations.zz`,,access to `this.codetoanalyze.java.checkers.Annotations.zz`] +codetoanalyze/java/racerd/Annotations.java, void Annotations.read_off_UI_thread_Bad(), 201, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Annotations.f`,,access to `this.codetoanalyze.java.checkers.Annotations.f`] +codetoanalyze/java/racerd/Annotations.java, void ThreadSafeAlias.threadSafeAliasBad1(), 92, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeAlias.field`] +codetoanalyze/java/racerd/Annotations.java, void ThreadSafeAlias.threadSafeAliasBad2(), 97, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeAlias.field`] +codetoanalyze/java/racerd/Arrays.java, String Arrays.readWriteRaceBad(String), 49, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.Arrays.strArr1.[_]`,,access to `this.Arrays.strArr1.[_]`] +codetoanalyze/java/racerd/Arrays.java, void Arrays.arrayParameterWriteBad(int[]), 28, THREAD_SAFETY_VIOLATION, ERROR, [access to `name1.[_]`] +codetoanalyze/java/racerd/Arrays.java, void Arrays.writeWriteRaceBad(String), 41, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.Arrays.strArr1.[_]`] +codetoanalyze/java/racerd/Builders.java, Builders$Obj Builders.buildThenMutateBad(Builders$Obj), 91, THREAD_SAFETY_VIOLATION, ERROR, [,call to Builders$Obj$Builder Builders$Obj$Builder.setFromObj(Builders$Obj),access to `input.codetoanalyze.java.checkers.Builders$Obj.g`,,access to `input.codetoanalyze.java.checkers.Builders$Obj.g`] +codetoanalyze/java/racerd/Builders.java, Builders$Obj Builders.buildThenMutateBad(Builders$Obj), 92, THREAD_SAFETY_VIOLATION, ERROR, [access to `input.codetoanalyze.java.checkers.Builders$Obj.g`] +codetoanalyze/java/racerd/Builders.java, Builders$Obj Builders.mutateBad(Builders$Obj), 84, THREAD_SAFETY_VIOLATION, ERROR, [access to `o.codetoanalyze.java.checkers.Builders$Obj.g`] +codetoanalyze/java/racerd/Builders.java, void TopLevelBuilder.setG(String), 103, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.TopLevelBuilder.g`] +codetoanalyze/java/racerd/Constructors.java, Constructors Constructors.FP_singleton2Ok(), 54, THREAD_SAFETY_VIOLATION, ERROR, [,access to `Constructors.Constructors.sSingleton1`,,access to `Constructors.Constructors.sSingleton1`] +codetoanalyze/java/racerd/Constructors.java, Constructors Constructors.singleton1Bad(), 59, THREAD_SAFETY_VIOLATION, ERROR, [call to Constructors.(Object),access to `Constructors.Constructors.staticField`] +codetoanalyze/java/racerd/Constructors.java, Constructors Constructors.singleton2Bad(), 65, THREAD_SAFETY_VIOLATION, ERROR, [,access to `Constructors.Constructors.sSingleton2`,,access to `Constructors.Constructors.sSingleton2`] +codetoanalyze/java/racerd/Constructors.java, Constructors Constructors.singleton2Bad(), 66, THREAD_SAFETY_VIOLATION, ERROR, [access to `Constructors.Constructors.sSingleton2`] +codetoanalyze/java/racerd/Constructors.java, Constructors Constructors.singleton2Bad(), 68, THREAD_SAFETY_VIOLATION, ERROR, [,access to `Constructors.Constructors.sSingleton2`,,access to `Constructors.Constructors.sSingleton2`] +codetoanalyze/java/racerd/Constructors.java, Constructors.(), 22, THREAD_SAFETY_VIOLATION, ERROR, [access to `Constructors.Constructors.staticField`] +codetoanalyze/java/racerd/Constructors.java, Constructors.(Constructors), 30, THREAD_SAFETY_VIOLATION, ERROR, [access to `o.Constructors.field`] +codetoanalyze/java/racerd/Containers.java, boolean Containers.listReadBad(String), 98, THREAD_SAFETY_VIOLATION, ERROR, [,Read of container `this.codetoanalyze.java.checkers.Containers.mList` via call to `contains`,,Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `set`] +codetoanalyze/java/racerd/Containers.java, int Containers.readSimpleArrayMap(), 284, THREAD_SAFETY_VIOLATION, ERROR, [,Read of container `this.codetoanalyze.java.checkers.Containers.si_map` via call to `get`,,Write to container `this.codetoanalyze.java.checkers.Containers.si_map` via call to `put`] +codetoanalyze/java/racerd/Containers.java, void Containers.addToSimpleArrayMapBad(SimpleArrayMap), 279, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `map` via call to `put`] +codetoanalyze/java/racerd/Containers.java, void Containers.addToSparseArrayBad(SparseArray), 269, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `sparseArray` via call to `put`] +codetoanalyze/java/racerd/Containers.java, void Containers.addToSparseArrayCompatBad(SparseArrayCompat), 260, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `sparseArray` via call to `put`] +codetoanalyze/java/racerd/Containers.java, void Containers.containerWrapperUnownedWriteBad(Object), 167, THREAD_SAFETY_VIOLATION, ERROR, [call to Object ContainerWrapper.write(Object),call to Object ContainerWrapper._write(Object),Write to container `this.codetoanalyze.java.checkers.ContainerWrapper.children` via call to `add`] +codetoanalyze/java/racerd/Containers.java, void Containers.listAddAllBad(Collection), 61, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `addAll`] +codetoanalyze/java/racerd/Containers.java, void Containers.listAddBad1(String), 53, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `add`] +codetoanalyze/java/racerd/Containers.java, void Containers.listAddBad2(int,String), 57, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `add`] +codetoanalyze/java/racerd/Containers.java, void Containers.listClearBad(), 65, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `clear`] +codetoanalyze/java/racerd/Containers.java, void Containers.listRemoveBad1(int), 69, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `remove`] +codetoanalyze/java/racerd/Containers.java, void Containers.listRemoveBad2(String), 73, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `remove`] +codetoanalyze/java/racerd/Containers.java, void Containers.listSetBad(int,String), 81, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mList` via call to `set`] +codetoanalyze/java/racerd/Containers.java, void Containers.listSubclassWriteBad(ArrayList,int), 85, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `list` via call to `remove`] +codetoanalyze/java/racerd/Containers.java, void Containers.mapClearBad(), 115, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mMap` via call to `clear`] +codetoanalyze/java/racerd/Containers.java, void Containers.mapPutAllBad(Map), 119, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mMap` via call to `putAll`] +codetoanalyze/java/racerd/Containers.java, void Containers.mapPutBad(String,String), 107, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mMap` via call to `put`] +codetoanalyze/java/racerd/Containers.java, void Containers.mapRemoveBad(String), 111, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.mMap` via call to `remove`] +codetoanalyze/java/racerd/Containers.java, void Containers.mapSubclassWriteBad(HashMap,String), 137, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `m` via call to `remove`] +codetoanalyze/java/racerd/Containers.java, void Containers.poolBad(), 297, THREAD_SAFETY_VIOLATION, ERROR, [Write to container `this.codetoanalyze.java.checkers.Containers.simplePool` via call to `release`] +codetoanalyze/java/racerd/DeepOwnership.java, void DeepOwnership.globalNotOwnedBad(), 19, THREAD_SAFETY_VIOLATION, ERROR, [access to `DeepOwnership.DeepOwnership.global.DeepOwnership.next`] +codetoanalyze/java/racerd/DeepOwnership.java, void DeepOwnership.reassignBaseToGlobalBad(), 25, THREAD_SAFETY_VIOLATION, ERROR, [access to `x.DeepOwnership.next`] +codetoanalyze/java/racerd/Dispatch.java, void Dispatch.callUnannotatedInterfaceBad(UnannotatedInterface), 51, INTERFACE_NOT_THREAD_SAFE, ERROR, [Call to un-annotated interface method void UnannotatedInterface.foo()] +codetoanalyze/java/racerd/Dispatch.java, void Dispatch.callUnannotatedInterfaceIndirectBad(NotThreadSafe,UnannotatedInterface), 55, INTERFACE_NOT_THREAD_SAFE, ERROR, [call to void NotThreadSafe.notThreadSafeOk(UnannotatedInterface),Call to un-annotated interface method void UnannotatedInterface.foo()] +codetoanalyze/java/racerd/Dispatch.java, void ThreadConfinedField.interfaceCallOnNormalFieldBad(), 103, INTERFACE_NOT_THREAD_SAFE, ERROR, [Call to un-annotated interface method void UnannotatedInterface.foo()] +codetoanalyze/java/racerd/Inference.java, int Inference.read4OutsideSyncBad(), 67, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Inference.mField4`,,access to `this.codetoanalyze.java.checkers.Inference.mField4`] +codetoanalyze/java/racerd/Inference.java, int Inference.unprotectedRead1Bad(), 23, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Inference.mField1`,,access to `this.codetoanalyze.java.checkers.Inference.mField1`] +codetoanalyze/java/racerd/Inference.java, int Inference.unprotectedRead2Bad(), 36, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Inference.mField2`,,access to `this.codetoanalyze.java.checkers.Inference.mField2`] +codetoanalyze/java/racerd/Locks.java, Object Locks.unownedReadBad(), 366, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Locks.mField3`,,call to void Locks.lockedWriteInCallee2(),access to `this.codetoanalyze.java.checkers.Locks.mField3`] +codetoanalyze/java/racerd/Locks.java, boolean Locks.readOutsideLock1Bad(), 311, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Locks.mField`,,access to `this.codetoanalyze.java.checkers.Locks.mField`] +codetoanalyze/java/racerd/Locks.java, boolean Locks.readOutsideLock2Bad(), 315, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Locks.mField`,,access to `this.codetoanalyze.java.checkers.Locks.mField`] +codetoanalyze/java/racerd/Locks.java, void Locks.afterReentrantLockUnlockBad(), 48, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] +codetoanalyze/java/racerd/Locks.java, void Locks.afterUnlockBad(), 42, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] +codetoanalyze/java/racerd/Locks.java, void Locks.afterWriteLockUnlockBad(), 54, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] +codetoanalyze/java/racerd/Locks.java, void Locks.lockInLoopLexicalBad(int), 251, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] +codetoanalyze/java/racerd/Locks.java, void Locks.negatedReentrantLockTryLockBad(), 115, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] +codetoanalyze/java/racerd/Locks.java, void Locks.nested1Bad(), 198, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] +codetoanalyze/java/racerd/Locks.java, void Locks.nested2Bad(), 204, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] +codetoanalyze/java/racerd/Locks.java, void Locks.nested3Bad(), 214, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] +codetoanalyze/java/racerd/Locks.java, void Locks.tryLockNoCheckBad(), 95, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] +codetoanalyze/java/racerd/Locks.java, void Locks.tryLockWrongBranchBad(), 101, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] +codetoanalyze/java/racerd/Locks.java, void Locks.useLockInCalleeBad(), 225, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.Locks.f`] +codetoanalyze/java/racerd/Ownership.java, Ownership.(Obj,Object), 67, THREAD_SAFETY_VIOLATION, ERROR, [access to `obj.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Ownership.java, int Ownership.readGlobalBad(), 403, THREAD_SAFETY_VIOLATION, ERROR, [,access to `checkers.Ownership.codetoanalyze.java.checkers.Ownership.global`,,access to `checkers.Ownership.codetoanalyze.java.checkers.Ownership.global`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.cantOwnThisBad(), 172, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.setField(Obj),access to `this.codetoanalyze.java.checkers.Ownership.field`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.castThenCallBad(), 345, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.castThenCall(Obj),call to void Subclass.doWrite(),access to `this.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.castThenReturnBad(), 360, THREAD_SAFETY_VIOLATION, ERROR, [access to `n$5.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.conditionalAliasBad(Obj), 506, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.conditionalAlias(Obj,Obj),access to `alias.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.notOwnedInCalleeBad(Obj), 234, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.mutateIfNotNull(Obj),access to `o.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.notPropagatingOwnershipToAccessPathRootedAtFormalBad(Obj), 421, THREAD_SAFETY_VIOLATION, ERROR, [access to `m.codetoanalyze.java.checkers.Obj.g`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.notPropagatingOwnershipToUnownedLocalAccessPathBad(), 427, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Ownership.field`,,call to void Ownership.setField(Obj),access to `this.codetoanalyze.java.checkers.Ownership.field`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.notPropagatingOwnershipToUnownedLocalAccessPathBad(), 428, THREAD_SAFETY_VIOLATION, ERROR, [access to `m.codetoanalyze.java.checkers.Obj.g`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.ownInOneBranchBad(Obj,boolean), 83, THREAD_SAFETY_VIOLATION, ERROR, [access to `formal.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.reassignParamToUnownedBad(), 456, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.reassignParamToUnowned(Obj),access to `o.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.reassignToFormalBad(Obj), 88, THREAD_SAFETY_VIOLATION, ERROR, [access to `formal.codetoanalyze.java.checkers.Obj.g`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.reassignToFormalBad(Obj), 89, THREAD_SAFETY_VIOLATION, ERROR, [access to `formal.codetoanalyze.java.checkers.Obj.g.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.reassignToFormalBad(Obj), 89, THREAD_SAFETY_VIOLATION, ERROR, [,access to `formal.codetoanalyze.java.checkers.Obj.g`,,access to `formal.codetoanalyze.java.checkers.Obj.g`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.writeToNotOwnedInCalleeBad1(Obj), 158, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.writeToFormal(Obj),access to `formal.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.writeToNotOwnedInCalleeBad2(), 163, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.writeToFormal(Obj),access to `formal.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.writeToNotOwnedInCalleeBad3(Obj), 167, THREAD_SAFETY_VIOLATION, ERROR, [call to void Ownership.callWriteToFormal(Obj),call to void Ownership.writeToFormal(Obj),access to `formal.codetoanalyze.java.checkers.Obj.f`] +codetoanalyze/java/racerd/Ownership.java, void Ownership.writeToOwnedInCalleeOk2(), 184, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Ownership.field`,,access to `this.codetoanalyze.java.checkers.Ownership.field`] +codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.conditional2_bad(boolean), 130, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.ff`] +codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.conditionalMainThreadWriteBad(), 227, THREAD_SAFETY_VIOLATION, ERROR, [call to void RaceWithMainThread.conditionalMainThreadWrite2(boolean),access to `this.codetoanalyze.java.checkers.RaceWithMainThread.mOnlyWrittenOnMain`] +codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.conditional_isMainThread_ElseBranch_Bad(), 156, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.ff`] +codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.conditional_isMainThread_Negation_Bad(), 175, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.ff`] +codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.conditional_isUiThread_ElseBranch_Bad(), 167, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.ff`] +codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.confusedAssertBad(boolean), 199, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.mFld`] +codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.readProtectedUnthreadedBad(), 97, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f`,,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f`] +codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.read_unprotected_unthreaded1_Bad(), 63, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f1`,,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f1`] +codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.read_unprotected_unthreaded_Bad(), 58, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f`,,access to `this.codetoanalyze.java.checkers.RaceWithMainThread.f`] +codetoanalyze/java/racerd/RaceWithMainThread.java, void RaceWithMainThread.writeAfterConditionalMainThreadInCalleeBad(), 236, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.RaceWithMainThread.mSharedField`] +codetoanalyze/java/racerd/ReadWriteRaces.java, Object ReadWriteRaces.callUnprotecteReadInCallee(), 76, THREAD_SAFETY_VIOLATION, ERROR, [,call to Object ReadWriteRaces.unprotectedReadInCallee(),access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field1`,,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field1`] +codetoanalyze/java/racerd/ReadWriteRaces.java, Object ReadWriteRaces.unprotectedRead1(), 68, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field1`,,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field1`] +codetoanalyze/java/racerd/ReadWriteRaces.java, Object ReadWriteRaces.unprotectedRead2(), 86, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field2`,,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field2`] +codetoanalyze/java/racerd/ReadWriteRaces.java, Object ReadWriteRaces.unprotectedRead3(), 98, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field3`,,call to void ReadWriteRaces.syncWrite3(),access to `this.codetoanalyze.java.checkers.ReadWriteRaces.field3`] +codetoanalyze/java/racerd/ReadWriteRaces.java, void ReadWriteRaces.m1(), 46, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.racy`,,access to `this.codetoanalyze.java.checkers.ReadWriteRaces.racy`] +codetoanalyze/java/racerd/ReadWriteRaces.java, void ReadWriteRaces.m2(), 50, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ReadWriteRaces.racy`] +codetoanalyze/java/racerd/ReadWriteRaces.java, void ReadWriteRaces.m3(), 54, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ReadWriteRaces.racy`] +codetoanalyze/java/racerd/ReadWriteRaces.java, void ReadWriteRaces.readInCalleeOutsideSyncBad(int), 105, THREAD_SAFETY_VIOLATION, ERROR, [,call to int C.get(),access to `this.codetoanalyze.java.checkers.C.x`,,call to void C.set(int),access to `this.codetoanalyze.java.checkers.C.x`] +codetoanalyze/java/racerd/SubFld.java, int SubFld.getG(), 29, THREAD_SAFETY_VIOLATION, ERROR, [,call to int SuperFld.getG(),access to `this.SuperFld.g`,,access to `this.SuperFld.g`] +codetoanalyze/java/racerd/ThreadSafeExample.java, Object ThreadSafeExample.FP_lazyInitOk(), 134, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeExample.sStaticField`,,access to `this.codetoanalyze.java.checkers.ThreadSafeExample.sStaticField`] +codetoanalyze/java/racerd/ThreadSafeExample.java, void ExtendsThreadSafeExample.newmethodBad(), 146, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ExtendsThreadSafeExample.field`] +codetoanalyze/java/racerd/ThreadSafeExample.java, void ExtendsThreadSafeExample.tsOK(), 151, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ExtendsThreadSafeExample.field`] +codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.callPublicMethodBad(), 61, THREAD_SAFETY_VIOLATION, ERROR, [call to void ThreadSafeExample.assignInPrivateMethodOk(),access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] +codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.callVisibleForTestingBad(), 113, THREAD_SAFETY_VIOLATION, ERROR, [call to void ThreadSafeExample.visibleForTestingNotPublicOk(),access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] +codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.deeperTraceBad(), 70, THREAD_SAFETY_VIOLATION, ERROR, [call to void ThreadSafeExample.callAssignInPrivateMethod(),call to void ThreadSafeExample.assignInPrivateMethodOk(),access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] +codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.oddBad(), 51, THREAD_SAFETY_VIOLATION, ERROR, [call to void ThreadSafeExample.evenOk(),access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] +codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.recursiveBad(), 41, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] +codetoanalyze/java/racerd/ThreadSafeExample.java, void ThreadSafeExample.tsBad(), 37, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeExample.f`] +codetoanalyze/java/racerd/ThreadSafeExample.java, void YesThreadSafeExtendsNotThreadSafeExample.subsubmethodBad(), 175, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.YesThreadSafeExtendsNotThreadSafeExample.subsubfield`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, Object ThreadSafeMethods.readSameFieldAsThreadSafeMethod1Bad(), 58, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, Object ThreadSafeMethods.readSameFieldAsThreadSafeMethod2Bad(), 82, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field4`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field4`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, Object ThreadSafeMethods.readSameFieldAsThreadSafeMethodWhileSynchronized1Bad(), 67, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, Object ThreadSafeMethods.threadSafeMethodReadBad(), 31, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field2`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field2`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, Object ThreadSafeMethodsSubclass.readThreadSafeFieldOfOverrideBad(), 128, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethodsSubclass.subclassField`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethodsSubclass.subclassField`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethods.threadSafeMethodWriteBad(), 26, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethods.threadSafePrivateMethodBad(), 36, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field2`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethods.threadSafeVisibleForTestingMethodBad(), 42, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field3`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethods.writeSameFieldAsThreadSafeMethod1Bad(), 53, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field1`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethods.writeSameFieldAsThreadSafeMethod2Bad(), 77, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field4`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethods.field4`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethodsSubclass.safeMethodOverride(), 112, THREAD_SAFETY_VIOLATION, ERROR, [access to `this.codetoanalyze.java.checkers.ThreadSafeMethodsSubclass.subclassField`] +codetoanalyze/java/racerd/ThreadSafeMethods.java, void ThreadSafeMethodsSubclass.writeThreadSafeFieldOfOverrideBad(), 124, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.ThreadSafeMethodsSubclass.subclassField`,,access to `this.codetoanalyze.java.checkers.ThreadSafeMethodsSubclass.subclassField`] diff --git a/infer/tests/codetoanalyze/java/stability/issues.exp b/infer/tests/codetoanalyze/java/stability/issues.exp index 41440a201..f2de53d96 100644 --- a/infer/tests/codetoanalyze/java/stability/issues.exp +++ b/infer/tests/codetoanalyze/java/stability/issues.exp @@ -1,5 +1,5 @@ -codetoanalyze/java/stability/Interprocedural.java, void Interprocedural$Field.stable_bad(), 5, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Interprocedural$Field.a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`,,access to `this.codetoanalyze.java.checkers.Interprocedural$Field.a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`] -codetoanalyze/java/stability/Interprocedural.java, void Interprocedural$Param.stable_bad(Interprocedural$A), 5, THREAD_SAFETY_VIOLATION, ERROR, [,access to `a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`,,access to `a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`] -codetoanalyze/java/stability/Interprocedural.java, void Interprocedural$Param2.stable_bad(Interprocedural$A), 6, THREAD_SAFETY_VIOLATION, ERROR, [,access to `a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`,,access to `a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`] -codetoanalyze/java/stability/Intraprocedural.java, void Intraprocedural$Field.stable_bad(), 5, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Intraprocedural$Field.a.codetoanalyze.java.checkers.Intraprocedural$A.f.codetoanalyze.java.checkers.Intraprocedural$B.g`,,access to `this.codetoanalyze.java.checkers.Intraprocedural$Field.a.codetoanalyze.java.checkers.Intraprocedural$A.f.codetoanalyze.java.checkers.Intraprocedural$B.g`] -codetoanalyze/java/stability/Intraprocedural.java, void Intraprocedural$Param.stable_bad(Intraprocedural$A), 5, THREAD_SAFETY_VIOLATION, ERROR, [,access to `a.codetoanalyze.java.checkers.Intraprocedural$A.f.codetoanalyze.java.checkers.Intraprocedural$B.g`,,access to `a.codetoanalyze.java.checkers.Intraprocedural$A.f.codetoanalyze.java.checkers.Intraprocedural$B.g`] +codetoanalyze/java/stability/Interprocedural.java, void Interprocedural$Field.stable_bad(), 47, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Interprocedural$Field.a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`,,access to `this.codetoanalyze.java.checkers.Interprocedural$Field.a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`] +codetoanalyze/java/stability/Interprocedural.java, void Interprocedural$Param.stable_bad(Interprocedural$A), 74, THREAD_SAFETY_VIOLATION, ERROR, [,access to `a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`,,access to `a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`] +codetoanalyze/java/stability/Interprocedural.java, void Interprocedural$Param2.stable_bad(Interprocedural$A), 92, THREAD_SAFETY_VIOLATION, ERROR, [,access to `a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`,,access to `a.codetoanalyze.java.checkers.Interprocedural$A.f.codetoanalyze.java.checkers.Interprocedural$B.g`] +codetoanalyze/java/stability/Intraprocedural.java, void Intraprocedural$Field.stable_bad(), 43, THREAD_SAFETY_VIOLATION, ERROR, [,access to `this.codetoanalyze.java.checkers.Intraprocedural$Field.a.codetoanalyze.java.checkers.Intraprocedural$A.f.codetoanalyze.java.checkers.Intraprocedural$B.g`,,access to `this.codetoanalyze.java.checkers.Intraprocedural$Field.a.codetoanalyze.java.checkers.Intraprocedural$A.f.codetoanalyze.java.checkers.Intraprocedural$B.g`] +codetoanalyze/java/stability/Intraprocedural.java, void Intraprocedural$Param.stable_bad(Intraprocedural$A), 63, THREAD_SAFETY_VIOLATION, ERROR, [,access to `a.codetoanalyze.java.checkers.Intraprocedural$A.f.codetoanalyze.java.checkers.Intraprocedural$B.g`,,access to `a.codetoanalyze.java.checkers.Intraprocedural$A.f.codetoanalyze.java.checkers.Intraprocedural$B.g`]