Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Treat JVM platform frames (java.*, kotlin.*, ...) as non-user code in error stacking

Aperta
#2,679 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
55/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
csharp
Ambito
backend

Direzione di ricerca

Start with src/Exceptionless.Core/Utility/ErrorSignature.cs, especially the default non-user namespace list and IsUserNamespace at the lines linked in the issue. Check the existing tests for error stacking and add coverage for JVM namespaces and namespace boundary matching. Done means JVM platform frames are excluded from user frames without matching similarly named user namespaces; the issue leaves common framework defaults open for discussion.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement

Problem

ErrorSignature decides which stack frame is "user code" by namespace. With no User Namespaces configured, every namespace except System and Microsoft counts as user code:

For Java (and Kotlin, Scala, ...) errors, the JDK frame that threw becomes the stacking target. For example, Integer.parseInt("two") stacks on:

ExceptionType: java.lang.NumberFormatException
Method:        java.lang.NumberFormatException.forInputString(...)

So every NumberFormatException from Integer.parseInt in a project lands in one stack, no matter which application method called it. The same happens for Objects.requireNonNull, collections, I/O and so on. The new Java client's end-to-end tests reproduce this against 8.10.0 (StackingSignatureE2ETest). Two unrelated call sites get the same stack_id.

Proposal

Add the JVM platform namespaces to the default non-user list:

java, javax, jdk, sun, com.sun, jakarta, kotlin, kotlinx, scala

Also match on a namespace boundary (ns == prefix || ns.StartsWith(prefix + ".")) instead of a bare StartsWith. Otherwise sun would also match a user namespace like sunrise.billing; today System already matches SystemsIntegration.*.

To discuss: whether common frameworks (org.springframework, org.apache, org.hibernate, io.netty, reactor, com.fasterxml) should also be non-user by default. .NET already treats all of Microsoft.*, including ASP.NET Core and EF Core, as non-user, so including them would be consistent.

Notes

  • If no user frame is found, the existing fallback still uses the innermost error's top frame, so pure-JDK traces keep a signature.
  • Signature hashes change for existing Java/Kotlin stacks, so their next occurrence creates a new stack. The old Java client (0.1) couldn't send stack traces in the format the server reads anyway, so few existing stacks are affected.
  • Projects can already get this behaviour by setting User Namespaces, but that setting doesn't work from the UI today (see #2678).

Context: exceptionless/Exceptionless.Java#91, exceptionless/Exceptionless.Java#92

Lingua principale
C#
Stelle
2.5k
Fork
508
Merge medio
2g 17h
PR unite (30g)
40

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di exceptionless/Exceptionless

Tutte le issue di exceptionless/Exceptionless

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.