NullReferenceException on new Document() when using multiple threads (one per document)

I am evaluating Aspose.PDF and I am unable to render 2 separate documents from HTML at once.
I get a NullReferenceException.

I’m using Aspose.PDF 20.11.0 with .NET Core 3.1 on a Windows 10 system (but plan to deploy on a Linux system for production).
Here is some sample code that results in the error:

const int NUMBEROFCONCURRENTRENDERS = 2;
var range = Enumerable.Range(1, NUMBEROFCONCURRENTRENDERS);
var sem = new SemaphoreSlim(1, 1);
var manyDocs = range.Select(x =>
{
    var index = x;
    return Task.Run(() =>
    {
        //sem.Wait();
        var html = @"<body><div>Hello World!</div></body>";
        using var stream = new MemoryStream(Encoding.UTF8.GetBytes(html));
        var htmlLoadOptions = new Aspose.Pdf.HtmlLoadOptions();

        var doc = new Aspose.Pdf.Document(stream, htmlLoadOptions);
        var pdfSaveOptions = new Aspose.Pdf.PdfSaveOptions();
        doc.Save($"output{index:D2}.pdf", pdfSaveOptions);
        //sem.Release();
    });
}).ToArray();
Task.WaitAll(manyDocs);

Set the renders down to 1 or uncomment the semaphore use and the code runs to completion.
I require the performance gains of multi-threaded PDF generation so I consider this a major issue, especially since I’ve seen mention that multithreaded rendering is supported as long as they are separate documents, which is currently not the case.

As I am currently evaluating this, I am interested to know what the lead time is on support requests.
Please keep me informed on the status of this issue.

Thanks!
Randy


Here’s the stacktrace:

   at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
   at #=zepv793VfFdij_jw2ujOnTIrSvMl_hKz6jA==.#=ztjNBZ4w=(#=z6ds7JA4= #=zBJTJp2Y=, IList`1 #=zoVmSygI=)
   at #=zepv793VfFdij_jw2ujOnTIrSvMl_hKz6jA==.#=ztjNBZ4w=(#=z6ds7JA4= #=zBJTJp2Y=)
   at #=zIePKlzyILnw0BL2YWJRbB0hKXHaRId$6v90pD_o=.#=zsq$9RZo=()
   at #=zqRBKAMNsGGFYZ22GEe2JGcrfrgn3FbJEFw==.#=zXY_zx7dtz1oL0UdJGJPinH3DU6bMPUPIKiEG8ls=()
   at #=zqRBKAMNsGGFYZ22GEe2JGcrfrgn3FbJEFw==.#=zySVIexg=()
   at #=zqRBKAMNsGGFYZ22GEe2JGcrfrgn3FbJEFw==..ctor(#=znGPZBxmlXRakeX8gkBk$$H4= #=zYyovubM=, #=zAIB_9cPSZpgRqNlXel1e1cKW3lxHu8l9CFWQ7xc= #=zSt5cf4Q=, #=zqRBKAMNsGGFYZ22GEe2JGcrfrgn3FbJEFw== #=zI59jSIMLcdAV)
   at #=zqRBKAMNsGGFYZ22GEe2JGcrfrgn3FbJEFw==..ctor(#=zv7lhw2MccRRkf_xCIrC9GPU= #=zLXzlS3c=, #=zqRBKAMNsGGFYZ22GEe2JGcrfrgn3FbJEFw== #=zI59jSIMLcdAV)
   at dje_z33UQZ8DZSYXNLZ66J72TN3QKMMW3ND4U6J7ZXW26_ejd.#=zh4nZaaPUx4WS(#=zv7lhw2MccRRkf_xCIrC9GPU= #=zLXzlS3c=, #=zRdnpl3zEyCIvY1Rdym9W3oIiJRbZw56GuA== #=zU1HJM1Q=, #=zzumlbqSf0rQXYlOazurtB9Lfl1IGksXANw== #=zLFoUB8jnGjLK, #=z7sG86HRgZkMlGMzS_GjUG5mQiQgp #=zp_UL00E=, #=zqRBKAMNsGGFYZ22GEe2JGcrfrgn3FbJEFw== #=zI59jSIMLcdAV, #=zT7MxQAMPbB4EKY0x$7WCsFANAKzWqrXNdw== #=zIGZHoElN2JC0Tg3_Ug==)
   at dje_z33UQZ8DZSYXNLZ66J72TN3QKMMW3ND4U6J7ZXW26_ejd.#=zIq1kngI=(#=zv7lhw2MccRRkf_xCIrC9GPU= #=zLXzlS3c=, #=zRdnpl3zEyCIvY1Rdym9W3oIiJRbZw56GuA== #=zU1HJM1Q=, #=zzumlbqSf0rQXYlOazurtB9Lfl1IGksXANw== #=zLFoUB8jnGjLK, #=zT7MxQAMPbB4EKY0x$7WCsFANAKzWqrXNdw== #=zIGZHoElN2JC0Tg3_Ug==)
   at #=zINALoVkKSCqhOctRLuZw3IVGWEYpmSZnqQ==.#=zPSg0bzc5uWAj(#=zchR0EnGyTYFJeQ_3a_N5H8o= #=zanrpBCo=, #=zC3qHqh0JMSMjOKGxa3RJkAlt54Xq #=zfGUEgOvGuDC97MSjjA==, #=z7bvrcfh_wLzrznNJ12WnTaFRPS5O #=zeJDrXYU=, #=zSZGgSqZ8UC4pNFIXRTAFarf_nfsH #=zgJQ9Vws=)
   at #=zINALoVkKSCqhOctRLuZw3IVGWEYpmSZnqQ==.#=zRfBjMQs=(#=z7bvrcfh_wLzrznNJ12WnTaFRPS5O #=zeJDrXYU=, #=zSZGgSqZ8UC4pNFIXRTAFarf_nfsH #=zgJQ9Vws=)
   at #=zSZGgSqZ8UC4pNFIXRTAFarf_nfsH.#=zRfBjMQs=(#=z7bvrcfh_wLzrznNJ12WnTaFRPS5O #=zeJDrXYU=)
   at #=z0sns31j6wy0_VC$$Ja_Fe3I$mIEO.#=zuyciCB0=()
   at #=z0sns31j6wy0_VC$$Ja_Fe3I$mIEO.MoveNext()
   at #=zL$M5uCSU4txNsLe87Io01xzN9H$C3id86g==.#=zKHMdd96k$A5w(#=zFHEgCTkszcXBL0N3893xN48= #=z7iYWM7XETaNSmlfygw==, #=zSZGgSqZ8UC4pNFIXRTAFarf_nfsH[] #=zDOwlAm_y6IxC, #=z7bvrcfh_wLzrznNJ12WnTaFRPS5O #=zeJDrXYU=, TimeSpan #=zoGVXzK4=)
   at #=zKuaZ0n5_UZ626AgtMv7Os82ubkJL.Render(#=z7bvrcfh_wLzrznNJ12WnTaFRPS5O #=zeJDrXYU=, TimeSpan #=zoGVXzK4=, #=zv7lhw2MccRRkf_xCIrC9GPU=[] #=zY9CzABE=, #=zchR0EnGyTYFJeQ_3a_N5H8o=[] #=zh_dKgCs=)
   at #=zKuaZ0n5_UZ626AgtMv7Os82ubkJL.Render(#=z7bvrcfh_wLzrznNJ12WnTaFRPS5O #=zeJDrXYU=, TimeSpan #=zoGVXzK4=, #=zchR0EnGyTYFJeQ_3a_N5H8o=[] #=zh_dKgCs=)
   at #=zUqrDdB9zAhe3DLPDJprrb9p2OTuz.Render(#=z7bvrcfh_wLzrznNJ12WnTaFRPS5O #=zeJDrXYU=, #=zysH2GpM= #=zanrpBCo=, TimeSpan #=zoGVXzK4=)
   at #=zUqrDdB9zAhe3DLPDJprrb9p2OTuz.Render(#=z7bvrcfh_wLzrznNJ12WnTaFRPS5O #=zeJDrXYU=, #=zysH2GpM= #=zanrpBCo=)
   at #=z5M2Uv9Zx_eZaKearhVNfgErCMkhV.#=z0evQ6Lg=(Stream #=zuGDa2k4DZhpK, Document #=z$y3AsKbJHdsO, HtmlLoadOptions #=zw7W_PPHV5Yl1, String #=zG5yEyBZdKQQo)
   at #=z5M2Uv9Zx_eZaKearhVNfgErCMkhV.#=z0evQ6Lg=(Stream #=zuGDa2k4DZhpK, Document #=z$y3AsKbJHdsO, HtmlLoadOptions #=zw7W_PPHV5Yl1)
   at Aspose.Pdf.Document.#=zCP0rBx0=(Stream #=zBE3H15s=, LoadOptions #=z4Gp8a2g=)
   at Aspose.Pdf.Document..ctor(Stream input, LoadOptions options)

@rmaccarthy

The issue has been logged as PDFNET-49077 in our issue tracking system for the sake of investigation and resolution. It will be reviewed and fixed on first come first serve basis. We will surely keep you posted with the status of its rectification. Please be patient and spare us some time.

We are sorry for the inconvenience.