[ 
https://issues.apache.org/jira/browse/LUCENENET-602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16513823#comment-16513823
 ] 

Shad Storhaug commented on LUCENENET-602:
-----------------------------------------

{quote}At the moment I can't obtain a better stack trace: any suggestion?
{quote}
 

My suggestion would be to step through some test code to find out which of 
these 3 lines are throwing exceptions and what they are, something like:

{code:C#}
try
{
    var comparer = System.Collections.Generic.EqualityComparer<int>.Default;

    var hash = comparer.GetHashCode(1);

    var equal = comparer.Equals(1, 1);
}
catch (Exception ex)
{
    // Determine type of ex
}
{code}

I was assuming it was the first line, but it is apparently the second and/or 
3rd line that are throwing, and some feedback as to which of the lines throw 
exceptions and what type of exception is being thrown would be helpful.

{quote}For the update of Powershell build script  i'm studying ...
{quote}
 
Thanks. While it would be possible to fix this particular error with minor 
effort, looking through the codebase this problem is more widespread than just 
the facet functionality, as it was widely assumed by multiple developers that 
{{System.Collections.Generic.EqualityComparer<T>.Default}} is safe to use for 
value types. It still looks like this fix is the right approach, but we need to 
make it a bit smarter.

So, having some tests to run on AOT to provide feedback on whether the fix is 
complete would be extremely helpful.


> Error using Lucene.Net.Facet 4.8.0-beta00005  with Xamarin.iOS
> --------------------------------------------------------------
>
>                 Key: LUCENENET-602
>                 URL: https://issues.apache.org/jira/browse/LUCENENET-602
>             Project: Lucene.Net
>          Issue Type: Bug
>          Components: Lucene.Net.Facet
>    Affects Versions: Lucene.Net 4.8.0
>         Environment: Xamarin Forms 3.0.0.561731
> Ios 10.3.3 and Higher
> Lucene.Net.Facet 4.8.0-beta00005
>            Reporter: Enrico Caltran
>            Priority: Blocker
>              Labels: AOT, Xamarin.iOS, lucene.net.facet
>             Fix For: Lucene.Net 4.8.0
>
>   Original Estimate: 120h
>  Remaining Estimate: 120h
>
> I'm using Lucene.Net.Facet 4.8.0-beta00005 in a big Xamarin project.
> +With Xamarin.Android and Xamarin.UWP it's all right.+
> *+But With Xamarin.iOS on device (Ipad)+*, i'm receiving this error:
>  _Attempting to JIT compile method 
> 'Lucene.Net.Support.LurchTable2&lt;Lucene.Net.Facet.Taxonomy.FacetLabel, 
> Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader/Int32Class&gt;:InternalInsert&lt;Lucene.Net.Support.LurchTable2/Add2Info<Lucene.Net.Facet.Taxonomy.FacetLabel,
>  Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader/Int32Class>> 
> (int,Lucene.Net.Facet.Taxonomy.FacetLabel,int&,Lucene.Net.Support.LurchTable`2/Add2Info<Lucene.Net.Facet.Taxonomy.FacetLabel,
>  Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader/Int32Class>&)' 
> while running in aot-only mode. See 
> [https://developer.xamarin.com/guides/ios/advanced_topics/limitations/] for 
> more information._
> _{color:#d04437}at Lucene.Net.Support.LurchTable2[TKey,TValue].Insert[T] 
> (TKey key, T&amp; value) &lt;0x2570f48 + 0x000e0&gt; in 
> &lt;063e095c95d945a4ace32ab83d1227eb#2ae0fea9ea4eacaef83bf2e9713bb8ea&gt;:0 
> at (wrapper unknown) System.Object.gsharedvt_in() at 
> Lucene.Net.Support.LurchTable2[TKey,TValue].AddOrUpdate (TKey key, TValue 
> addValue, Lucene.Net.Support.KeyValueUpdate2[TKey,TValue] fnUpdate) 
> &lt;0x232824c + 0x0013b&gt; in 
> &lt;063e095c95d945a4ace32ab83d1227eb#2ae0fea9ea4eacaef83bf2e9713bb8ea&gt;:0 
> at Lucene.Net.Facet.Taxonomy.LRUHashMap2[TKey,TValue].Put (TKey key, TValue 
> value) <0x2c487f8 + 0x0015b> in 
> <79d3a7b905954d0993025c09c5d087ce#2ae0fea9ea4eacaef83bf2e9713bb8ea>:0 at 
> Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader.GetOrdinal 
> (Lucene.Net.Facet.Taxonomy.FacetLabel cp) <0x2c51970 + 0x0019b> in 
> <79d3a7b905954d0993025c09c5d087ce#2ae0fea9ea4eacaef83bf2e9713bb8ea>:0 at 
> Lucene.Net.Facet.Taxonomy.Int32TaxonomyFacets.GetTopChildren{color} 
> (System.Int32 topN, System.String dim, System.String[] path) <0x2c481dc + 
> 0x0008f> in 
> <79d3a7b905954d0993025c09c5d087ce#2ae0fea9ea4eacaef83bf2e9713bb8ea>:0 at 
> Login.MyMB.Lucene.Client.LuceneArticoliSearcher.GetListaArticoloXRicercaAvanzataConRicercaSemplice
>  (System.Collections.Generic.List1[T] listParametri) &lt;0x224add0 + 
> 0x001bb&gt; in 
> &lt;8f49891e0f0546e185aba7424d294ef7#2ae0fea9ea4eacaef83bf2e9713bb8ea&gt;:0 
> at 
> Login.MyMB.Lucene.Client.LuceneArticoliSearcher.GetListaArticoloConRicercaSemplice
>  (System.Collections.Generic.List1[T] listParametri) <0x224afbc + 0x0009f> in 
> <8f49891e0f0546e185aba7424d294ef7#2ae0fea9ea4eacaef83bf2e9713bb8ea>:0 at 
> MyMB.Forms.RicercaLucene.RicercaArticoloLucene.GetListaArticoliXRicercaSemplice
>  (Login.MyMB.Interface.IAmbiente ambiente, 
> Login.MyMB.Lucene.Client.LuceneArticoliSearcher las, 
> System.Collections.Generic.List`1[T] ListParametri, System.Boolean 
> isAbilitataRicercaBarcode) <0xe47fc0 + 0x000e7> in 
> <f1bb3149abe145459612794f1a096634#2ae0fea9ea4eacaef83bf2e9713bb8ea>:0 
> ..............................._
> At the link 
> [https://docs.microsoft.com/it-it/xamarin/ios/internals/limitations] , I 
> found the problem cause (I suppose...):
> _Value types as Dictionary Keys Using a value type as a Dictionary<TKey, 
> TValue> key is problematic, as the default Dictionary constructor attempts to 
> use EqualityComparer<TKey>.Default. EqualityComparer<TKey>.Default, in turn, 
> attempts to use Reflection to instantiate a new type which implements the 
> IEqualityComparer<TKey> interface. This works for reference types (as the 
> reflection+create a new type step is skipped), but for value types it crashes 
> and burns rather quickly once you attempt to use it on the device. 
> Workaround: Manually implement the IEqualityComparer<TKey> interface in a new 
> type and provide an instance of that type to the Dictionary<TKey, TValue> 
> (IEqualityComparer<TKey>) constructor._
> So, what can I do? Thank you in advance, Enrico Caltran +393357485560 
> [[email protected]|mailto:[email protected]]



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to