{"record":{"id":"8249a40b6fb9326d","repo":"dotnet/reactive","slug":"source4","errorCode":null,"errorMessage":"source4","messagePattern":"source4","errorType":"validation","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"Rx.NET/Source/src/System.Reactive/Linq/Observable.Multiple.Zip.cs","lineNumber":868,"sourceCode":"        {\n            if (source1 == null)\n            {\n                throw new ArgumentNullException(nameof(source1));\n            }\n\n            if (source2 == null)\n            {\n                throw new ArgumentNullException(nameof(source2));\n            }\n\n            if (source3 == null)\n            {\n                throw new ArgumentNullException(nameof(source3));\n            }\n\n            if (source4 == null)\n            {\n                throw new ArgumentNullException(nameof(source4));\n            }\n\n            if (source5 == null)\n            {\n                throw new ArgumentNullException(nameof(source5));\n            }\n\n            if (source6 == null)\n            {\n                throw new ArgumentNullException(nameof(source6));\n            }\n\n            if (source7 == null)\n            {\n                throw new ArgumentNullException(nameof(source7));\n            }\n\n            if (source8 == null)","sourceCodeStart":850,"sourceCodeEnd":886,"githubUrl":"https://github.com/dotnet/reactive/blob/94b5d5ab912789f5abe9a72138a25bbd716fe59c/Rx.NET/Source/src/System.Reactive/Linq/Observable.Multiple.Zip.cs#L850-L886","documentation":"In the 14-source Zip overload the fourth sequence is validated at line 868; a null source4 causes ArgumentNullException with parameter 'source4'. All 14 inputs must be live (or empty) observable sequences for Zip to combine elements element-wise.","triggerScenarios":"Calling the 14-argument Observable.Zip with null in the fourth argument position while other sources are non-null.","commonSituations":"A telemetry/event stream that was never initialized for feed 4, a null from a lookup keyed by stream name, or a refactor that shifted the null into this position.","solutions":["Supply a valid observable for source4, or Observable.Empty<TSource4>() as a placeholder.","Fix the code path that assigned null to the fourth source variable.","Add a pre-call null check for each of the 14 sources.","Verify no argument drift in the long call site."],"exampleFix":"// before\nvar zipped = Observable.Zip(s1, s2, s3, null, s5, ..., s14, selector);\n// after\nvar zipped = Observable.Zip(s1, s2, s3, s4 ?? Observable.Empty<TSource4>(), s5, ..., s14, selector);","handlingStrategy":"validation","validationCode":"if (source4 == null) throw new ArgumentNullException(nameof(source4));","typeGuard":"static IObservable<T> NonNull<T>(IObservable<T> s) => s ?? Observable.Empty<T>();","tryCatchPattern":"try { var zipped = Observable.Zip(source1, source2, source3, source4, ...); } catch (ArgumentNullException ex) when (ex.ParamName == \"source4\") { /* substitute default source or abort */ }","preventionTips":["Initialize all stream fields/variables before the Zip call.","Replace null optional streams with Observable.Empty<T>().","Use nullable reference types to surface null sources at compile time."],"tags":["rx","null-argument","argument-validation"],"backgroundTag":"null-argument","analyzedSha":"94b5d5ab912789f5abe9a72138a25bbd716fe59c","analyzedAt":"2026-09-15T02:26:24.759Z","contentChangedAt":"2026-09-15T02:26:24.759Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}