microsoft / infersharp

Infer# is an interprocedural and scalable static code analyzer for C#. Via the capabilities of Facebook's Infer, this tool detects null dereferences, resource leaks, and thread-safety violations. It also performs taint flow tracking to detect critical security vulnerabilities like SQL injections.
MIT License
730 stars 29 forks source link

Running via Visual Studio 2022 doesn't appear to work due to attempt to write to internal Microsoft file share. #112

Open Tim-Utelogy opened 2 years ago

Tim-Utelogy commented 2 years ago

Running this in VS, I pointed the analyzer at my build directory. It goes for a while and then fails with this error:

Translation complete. Beginning analysis. In instruction n$5=_fun_Boolean Nullable`1<!0>.get_HasValue()(&CS$0$0000:) [line 68, column 13] While analysing function ./Program.cs:Void NumberedRecurrenceRange.WriteElementsToXml(EwsServiceXmlWriter) at \REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\ComplexProperties\Recurrence\Ranges\NumberedRecurrenceRange.cs:66:13, raised "Assert_failure src/absint/HilExp.ml:455:85" Uncaught Internal Error: "Assert_failure src/absint/HilExp.ml:455:85" Error backtrace: Raised at AbsintHilExp.access_exprs_of_exp.ofexp in file "src/absint/HilExp.ml", line 455, characters 85-97 Called from AbsintHilExp.access_expr_of_lhs_exp in file "src/absint/HilExp.ml", line 521, characters 16-95 Called from AbsintHilExp.of_sil.ofsil in file "src/absint/HilExp.ml", line 602, characters 12-90 Called from AbsintHilInstr.of_sil.exp_of_sil in file "src/absint/HilInstr.ml" (inlined), line 50, characters 4-65 Called from AbsintHilInstr.of_sil.(fun) in file "src/absint/HilInstr.ml" (inlined), line 94, characters 51-69 Called from Base__List.count_map in file "src/list.ml", line 387, characters 13-17 Called from BaseList.count_map in file "src/list.ml" (inlined), line 383, characters 18-680 Called from BaseList.map in file "src/list.ml" (inlined), line 418, characters 15-31 Called from AbsintHilInstr.of_sil in file "src/absint/HilInstr.ml", line 94, characters 20-78 Called from AbsintLowerHil.Make.hil_instr_of_sil in file "src/absint/LowerHil.ml", line 68, characters 6-96 Called from Absint__LowerHil.Make.exec_instr in file "src/absint/LowerHil.ml", line 89, characters 12-43 Called from AbsintAbstractInterpreter.AbstractInterpreterCommon.exec_node_instrs.exec_instr in file "src/absint/AbstractInterpreter.ml", line 384, characters 21-78 Re-raised at AbsintAbstractInterpreter.AbstractInterpreterCommon.exec_node_instrs.exec_instr in file "src/absint/AbstractInterpreter.ml", line 408, characters 10-58 Called from Base__Array.foldi.foldi_loop in file "src/array.ml" (inlined), line 347, characters 54-68 Called from BaseArray.foldi in file "src/array.ml" (inlined), line 349, characters 2-24 Called from IRInstrs.foldi in file "src/IR/Instrs.ml" (inlined), line 196, characters 6-33 Called from AbsintAbstractInterpreter.SimpleNodeTransferFunctions.exec_node_instrs in file "src/absint/AbstractInterpreter.ml" (inlined), line 123, characters 4-47 Called from AbsintAbstractInterpreter.AbstractInterpreterCommon.exec_node_instrs in file "src/absint/AbstractInterpreter.ml", line 412, characters 4-75 Called from AbsintAbstractInterpreter.AbstractInterpreterCommon.exec_node.update_inv_map in file "src/absint/AbstractInterpreter.ml" (inlined), line 420, characters 21-88 Called from AbsintAbstractInterpreter.AbstractInterpreterCommon.exec_node in file "src/absint/AbstractInterpreter.ml", line 458, characters 9-47 Called from Absint__AbstractInterpreter.MakeWithScheduler.exec_worklist in file "src/absint/AbstractInterpreter.ml", line 540, characters 16-125 Called from AbsintAbstractInterpreter.AbstractInterpreterCommon.make_compute_post in file "src/absint/AbstractInterpreter.ml" (inlined), line 520, characters 18-86 Called from AbsintAbstractInterpreter.MakeWithScheduler.compute_post in file "src/absint/AbstractInterpreter.ml" (inlined), line 570, characters 37-93 Called from Absint__AbstractInterpreter.MakeWithScheduler.compute_post in file "src/absint/AbstractInterpreter.ml" (inlined), line 570, characters 37-93 Called from AbsintLowerHil.MakeAbstractInterpreterWithConfig.compute_post in file "src/absint/LowerHil.ml", line 129, characters 4-80 Called from DotnetResourceLeaksCS.checker in file "src/dotnet/ResourceLeaksCS.ml", line 197, characters 4-87 Called from BackendCallbackOfChecker.interprocedural_with_field in file "src/backend/CallbackOfChecker.ml", line 55, characters 15-36 Called from BackendCallbacks.iterate_procedure_callbacks.(fun) in file "src/backend/callbacks.ml", line 58, characters 22-49 Called from BaseList.fold_right.(fun) in file "src/list.ml" (inlined), line 482, characters 29-34 Called from Stdliblist.fold_left in file "list.ml", line 121, characters 24-34 Called from BackendOndemand.analyze in file "src/backend/ondemand.ml", line 155, characters 16-76 Re-raised at IStdlibIExn.reraise_if in file "src/istd/IExn.ml" (inlined), line 18, characters 15-63 Called from BackendOndemand.run_proc_analysis in file "src/backend/ondemand.ml", line 223, characters 4-752 Called from BackendOndemand.analyze_proc_name_no_caller in file "src/backend/ondemand.ml" (inlined), line 340, characters 2-58 Called from BackendOndemand.analyze_procedures.analyze_proc_name_call in file "src/backend/ondemand.ml" (inlined), line 346, characters 12-53 Called from Stdliblist.iter in file "list.ml", line 110, characters 12-15 Called from Stdliblist.iter in file "list.ml" (inlined), line 108, characters 13-64 Called from Stdliblist.iter in file "list.ml" (inlined), line 110, characters 17-25 Called from Stdliblist.iter in file "list.ml" (inlined), line 108, characters 13-64 Called from BaseList0.iter in file "src/list0.ml" (inlined), line 25, characters 16-35 Called from BackendOndemand.analyze_procedures in file "src/backend/ondemand.ml", line 348, characters 2-54 Called from BackendOndemand.analyze_file in file "src/backend/ondemand.ml" (inlined), line 359, characters 2-64 Called from Backend__InferAnalyzeJson.analyze_json in file "src/backend/InferAnalyzeJson.ml", line 723, characters 2-43 Called from IntegrationDriver.execute_analyze_json in file "src/integration/Driver.ml", line 189, characters 6-54 Called from IBaseUtils.timeit in file "src/base/Utils.ml", line 424, characters 16-20 Called from IBaseScubaLogging.execute_with_time_logging in file "src/base/ScubaLogging.ml" (inlined), line 83, characters 29-44 Called from IntegrationDriver.analyze_and_report in file "src/integration/Driver.ml" (inlined), line 288, characters 2-144 Called from DuneexeInfer.run in file "src/infer.ml" (inlined), line 21, characters 2-47 Called from IBaseUtils.timeit in file "src/base/Utils.ml" (inlined), line 424, characters 16-20 Called from IBase__ScubaLogging.execute_with_time_logging in file "src/base/ScubaLogging.ml" (inlined), line 83, characters 29-44 Called from DuneexeInfer.run in file "src/infer.ml", line 25, characters 22-94

matjin commented 2 years ago

Hi! From testing so far on the extension, internal fileshares may pose some issues as the pipeline would try to copy files between the fileshare and your local WSL and also write to the fileshare. It looks like it is having an issue with writing to your WSL though, as it's crashing on the linux backend component.

Can you see if this issue persists if you copy the files to your local machine and re-run the analysis?