Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unexpected compiler error in a simple tail-recursive method #11892

Open
plokhotnyuk opened this issue Feb 22, 2020 · 3 comments
Open

Unexpected compiler error in a simple tail-recursive method #11892

plokhotnyuk opened this issue Feb 22, 2020 · 3 comments

Comments

@plokhotnyuk
Copy link

@plokhotnyuk plokhotnyuk commented Feb 22, 2020

It is hard to reproduce intentionally and happens sporadicaly during CI build on GitHub Actions servers:

2020-02-22T12:13:20.5881959Z [error] java.lang.AssertionError: assertion failed: 
2020-02-22T12:13:20.5882739Z [error]   (16,13)
2020-02-22T12:13:20.5883868Z [error]      while compiling: /home/runner/work/jsoniter-scala/jsoniter-scala/jsoniter-scala-macros/src/test/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMakerSpec.scala
2020-02-22T12:13:20.5884325Z [error]         during phase: globalPhase=specialize, enteringPhase=fields
2020-02-22T12:13:20.5884657Z [error]      library version: version 2.12.10
2020-02-22T12:13:20.5884944Z [error]     compiler version: version 2.12.10
2020-02-22T12:13:20.5887435Z [error]   reconstructed args: -bootclasspath /home/runner/.sbt/boot/scala-2.12.10/lib/scala-library.jar -deprecation -feature -unchecked -Ywarn-dead-code -Ywarn-unused:imports -Ywarn-unused:privates -Ywarn-unused:locals -Ywarn-unused:implicits -Xlint:adapted-args -Xlint:nullary-unit -Xlint:inaccessible -Xlint:nullary-override -Xlint:infer-any -Xlint:missing-interpolator -Xlint:doc-detached -Xlint:private-shadow -Xlint:type-parameter-shadow -Xlint:poly-implicit-overload -Xlint:option-implicit -Xlint:delayedinit-select -Xlint:by-name-right-associative -Xlint:package-object-classes -Xlint:unsound-match -Xlint:stars-align -Xlint:constant -Xlint:unused -classpath /home/runner/work/jsoniter-scala/jsoniter-scala/jsoniter-scala-macros/target/scala-2.12/test-classes:/home/runner/work/jsoniter-scala/jsoniter-scala/jsoniter-scala-macros/target/scala-2.12/classes:/home/runner/work/jsoniter-scala/jsoniter-scala/jsoniter-scala-core/target/scala-2.12/classes:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.12/1.2.0/scala-xml_2.12-1.2.0.jar:/home/runner/.sbt/boot/scala-2.12.10/lib/scala-compiler.jar:/home/runner/.sbt/boot/scala-2.12.10/lib/scala-reflect.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalactic/scalactic_2.12/3.1.1/scalactic_2.12-3.1.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest_2.12/3.1.1/scalatest_2.12-3.1.1.jar -Xmacro-settings:none
2020-02-22T12:13:20.5888166Z [error] 
2020-02-22T12:13:20.5888471Z [error]   last tree to typer: Apply(method asInstanceOf)
2020-02-22T12:13:20.5889224Z [error]        tree position: line 1183 of /home/runner/work/jsoniter-scala/jsoniter-scala/jsoniter-scala-macros/src/test/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMakerSpec.scala
2020-02-22T12:13:20.5889642Z [error]             tree tpe: Nested
2020-02-22T12:13:20.5889957Z [error]               symbol: final method asInstanceOf in class Any
2020-02-22T12:13:20.5890272Z [error]    symbol definition: final def asInstanceOf[T0](): T0 (a MethodSymbol)
2020-02-22T12:13:20.5890585Z [error]       symbol package: scala
2020-02-22T12:13:20.5891142Z [error]        symbol owners: method asInstanceOf -> class Any
2020-02-22T12:13:20.5891716Z [error]            call site: package macros in package jsoniter_scala in package jsoniter_scala
2020-02-22T12:13:20.5892046Z [error] 
2020-02-22T12:13:20.5892347Z [error] == Source file context for tree position ==
2020-02-22T12:13:20.5892639Z [error] 
2020-02-22T12:13:20.5892910Z [error]   1180 
2020-02-22T12:13:20.5893202Z [error]   1181       @tailrec
2020-02-22T12:13:20.5893512Z [error]   1182       def construct(d: Int = 1000000, n: Nested = Nested()): Nested =
2020-02-22T12:13:20.5893822Z [error]   1183         if (d <= 0) n
2020-02-22T12:13:20.5894408Z [error]   1184         else construct(d - 1, Nested(Some(n)))
2020-02-22T12:13:20.5894769Z [error]   1185 
2020-02-22T12:13:20.5895094Z [error]   1186       implicit val codecOfNestedStructs: JsonValueCodec[Nested] = make(CodecMakerConfig.withAllowRecursiveTypes(true))
2020-02-22T12:13:20.5895506Z [error] 	at scala.reflect.internal.SymbolTable.throwAssertionError(SymbolTable.scala:184)
2020-02-22T12:13:20.5895857Z [error] 	at scala.reflect.internal.Symbols$Symbol.updateInfo(Symbols.scala:1591)
2020-02-22T12:13:20.5896181Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$specializeClass$32(SpecializeTypes.scala:859)
2020-02-22T12:13:20.5896536Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$specializeClass$31(SpecializeTypes.scala:849)
2020-02-22T12:13:20.5896841Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.specializeClass(SpecializeTypes.scala:847)
2020-02-22T12:13:20.5897163Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.transformInfo(SpecializeTypes.scala:1279)
2020-02-22T12:13:20.5897487Z [error] 	at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:45)
2020-02-22T12:13:20.5897799Z [error] 	at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1635)
2020-02-22T12:13:20.5898231Z [error] 	at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1552)
2020-02-22T12:13:20.5898627Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$2(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5898961Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$1(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5899283Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.transformInfo(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5899602Z [error] 	at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:45)
2020-02-22T12:13:20.5899912Z [error] 	at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1635)
2020-02-22T12:13:20.5900225Z [error] 	at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1552)
2020-02-22T12:13:20.5900547Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$2(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5900853Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$1(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5901174Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.transformInfo(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5901506Z [error] 	at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:45)
2020-02-22T12:13:20.5901815Z [error] 	at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1635)
2020-02-22T12:13:20.5902124Z [error] 	at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1552)
2020-02-22T12:13:20.5902421Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$2(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5902740Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$1(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5903054Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.transformInfo(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5903381Z [error] 	at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:45)
2020-02-22T12:13:20.5903696Z [error] 	at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1635)
2020-02-22T12:13:20.5904161Z [error] 	at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1552)
2020-02-22T12:13:20.5904473Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$2(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5904803Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$1(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5905120Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.transformInfo(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5905444Z [error] 	at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:45)
2020-02-22T12:13:20.5905915Z [error] 	at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1635)
2020-02-22T12:13:20.5906238Z [error] 	at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1552)
2020-02-22T12:13:20.5906686Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$2(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5906990Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$1(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5907299Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.transformInfo(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5907599Z [error] 	at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:45)
2020-02-22T12:13:20.5907888Z [error] 	at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1635)
2020-02-22T12:13:20.5908357Z [error] 	at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1552)
2020-02-22T12:13:20.5908650Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$2(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5908957Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.$anonfun$transformInfo$1(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5909352Z [error] 	at scala.tools.nsc.transform.SpecializeTypes.transformInfo(SpecializeTypes.scala:1271)
2020-02-22T12:13:20.5909720Z [error] 	at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:45)
2020-02-22T12:13:20.5910194Z [error] 	at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1635)
2020-02-22T12:13:20.5910518Z [error] 	at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1552)
2020-02-22T12:13:20.5910819Z [error] 	at scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.$anonfun$implSpecClasses$1(SpecializeTypes.scala:1963)
2020-02-22T12:13:20.5911140Z [error] 	at scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.implSpecClasses(SpecializeTypes.scala:1961)
2020-02-22T12:13:20.5911458Z [error] 	at scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.$anonfun$transform$21(SpecializeTypes.scala:1682)
2020-02-22T12:13:20.5912560Z [error] 	at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
2020-02-22T12:13:20.5912884Z [error] 	at scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1681)
2020-02-22T12:13:20.5913320Z [error] 	at scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
2020-02-22T12:13:20.5913559Z [error] 	at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:147)
2020-02-22T12:13:20.5913778Z [error] 	at scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.super$transformUnit(SpecializeTypes.scala:1475)
2020-02-22T12:13:20.5914020Z [error] 	at scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.$anonfun$transformUnit$1(SpecializeTypes.scala:1475)
2020-02-22T12:13:20.5914262Z [error] 	at scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transformUnit(SpecializeTypes.scala:1475)
2020-02-22T12:13:20.5914493Z [error] 	at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:37)
2020-02-22T12:13:20.5914720Z [error] 	at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:453)
2020-02-22T12:13:20.5914970Z [error] 	at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:399)
2020-02-22T12:13:20.5915336Z [error] 	at scala.tools.nsc.transform.SpecializeTypes$SpecializationPhase.run(SpecializeTypes.scala:208)
2020-02-22T12:13:20.5915570Z [error] 	at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1503)
2020-02-22T12:13:20.5915796Z [error] 	at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1487)
2020-02-22T12:13:20.5916016Z [error] 	at scala.tools.nsc.Global$Run.compileSources(Global.scala:1480)
2020-02-22T12:13:20.5916242Z [error] 	at scala.tools.nsc.Global$Run.compile(Global.scala:1606)
2020-02-22T12:13:20.5916448Z [error] 	at xsbt.CachedCompiler0.run(CompilerInterface.scala:153)
2020-02-22T12:13:20.5916913Z [error] 	at xsbt.CachedCompiler0.run(CompilerInterface.scala:125)
2020-02-22T12:13:20.5917141Z [error] 	at xsbt.CompilerInterface.run(CompilerInterface.scala:39)
2020-02-22T12:13:20.5917382Z [error] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2020-02-22T12:13:20.5917640Z [error] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2020-02-22T12:13:20.5917898Z [error] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2020-02-22T12:13:20.5918121Z [error] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2020-02-22T12:13:20.5918355Z [error] 	at sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:248)
2020-02-22T12:13:20.5918593Z [error] 	at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:122)
2020-02-22T12:13:20.5918831Z [error] 	at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:95)
2020-02-22T12:13:20.5919073Z [error] 	at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:91)
2020-02-22T12:13:20.5919293Z [error] 	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
2020-02-22T12:13:20.5919616Z [error] 	at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:186)
2020-02-22T12:13:20.5919906Z [error] 	at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
2020-02-22T12:13:20.5920155Z [error] 	at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3$adapted(MixedAnalyzingCompiler.scala:77)
2020-02-22T12:13:20.5921174Z [error] 	at sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:215)
2020-02-22T12:13:20.5921418Z [error] 	at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:77)
2020-02-22T12:13:20.5921640Z [error] 	at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:144)
2020-02-22T12:13:20.5922011Z [error] 	at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:343)
2020-02-22T12:13:20.5922270Z [error] 	at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:343)
2020-02-22T12:13:20.5922512Z [error] 	at sbt.internal.inc.Incremental$.doCompile(Incremental.scala:120)
2020-02-22T12:13:20.5922754Z [error] 	at sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:100)
2020-02-22T12:13:20.5922990Z [error] 	at sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:180)
2020-02-22T12:13:20.5923307Z [error] 	at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:98)
2020-02-22T12:13:20.5923550Z [error] 	at sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:102)
2020-02-22T12:13:20.5923788Z [error] 	at sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:155)
2020-02-22T12:13:20.5924019Z [error] 	at sbt.internal.inc.Incremental$.compile(Incremental.scala:92)
2020-02-22T12:13:20.5924251Z [error] 	at sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:75)
2020-02-22T12:13:20.5924497Z [error] 	at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:348)
2020-02-22T12:13:20.5924731Z [error] 	at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:301)
2020-02-22T12:13:20.5925125Z [error] 	at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:168)
2020-02-22T12:13:20.5925377Z [error] 	at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:248)
2020-02-22T12:13:20.5925615Z [error] 	at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:74)
2020-02-22T12:13:20.5925847Z [error] 	at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1762)
2020-02-22T12:13:20.5926079Z [error] 	at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1735)
2020-02-22T12:13:20.5926295Z [error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
2020-02-22T12:13:20.5926531Z [error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
2020-02-22T12:13:20.5926767Z [error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:67)
2020-02-22T12:13:20.5926994Z [error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:281)
2020-02-22T12:13:20.5927228Z [error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:19)
2020-02-22T12:13:20.5927438Z [error] 	at sbt.Execute.work(Execute.scala:290)
2020-02-22T12:13:20.5927658Z [error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:281)
2020-02-22T12:13:20.5927891Z [error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
2020-02-22T12:13:20.5928128Z [error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
2020-02-22T12:13:20.5928365Z [error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
2020-02-22T12:13:20.5928588Z [error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
2020-02-22T12:13:20.5928825Z [error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
2020-02-22T12:13:20.5929147Z [error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
2020-02-22T12:13:20.5929433Z [error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
2020-02-22T12:13:20.5929670Z [error] 	at java.base/java.lang.Thread.run(Thread.java:834)
@joroKr21

This comment has been minimized.

Copy link

@joroKr21 joroKr21 commented Feb 22, 2020

https://github.com/scala/scala/blob/2.12.x/src/reflect/scala/reflect/internal/Symbols.scala#L1597

You can see which phase is number 16 with scalac -Xshow-phases

    specialize  13  @specialized-driven class and method specialization
 explicitouter  14  this refs to outer pointers
       erasure  15  erase types, add interfaces for traits
   posterasure  16  clean up erased inline classes

@SethTisue

This comment has been minimized.

Copy link
Member

@SethTisue SethTisue commented Feb 22, 2020

Curious if you've ever seen it happen on 2.13.x

@som-snytt

This comment has been minimized.

Copy link

@som-snytt som-snytt commented Feb 23, 2020

The comment says:

// only do it when necessary, otherwise the method type might be at a later phase already

I wonder what it means.

https://github.com/scala/scala/blob/2.13.x/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala#L862

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
4 participants
You can’t perform that action at this time.