tonivade / purefun

Functional Programming library for Java
MIT License
113 stars 4 forks source link

StackOverflowError using Scheduler #119

Closed tonivade closed 7 months ago

tonivade commented 7 months ago

Scheduler effect and typeclass implementation are not stack safe

...
0x000070710f00d6d8.run(Object) (Unknown Source:-1)
Function1.apply(Object) (/purefun-core-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.core/Function1.class:32)
PureIO.lambda$foldM$2(Function1,Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:99)
0x000070710f00d6d8.run(Object) (Unknown Source:-1)
Function1.apply(Object) (/purefun-core-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.core/Function1.class:32)
PureIO.lambda$foldM$2(Function1,Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:99)
0x000070710f00d6d8.run(Object) (Unknown Source:-1)
Function1.apply(Object) (/purefun-core-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.core/Function1.class:32)
PureIO.lambda$foldM$2(Function1,Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:99)
0x000070710f00d6d8.run(Object) (Unknown Source:-1)
Function1.apply(Object) (/purefun-core-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.core/Function1.class:32)
PureIO.lambda$foldM$2(Function1,Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:99)
0x000070710f00d6d8.run(Object) (Unknown Source:-1)
Function1.apply(Object) (/purefun-core-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.core/Function1.class:32)
PureIO.lambda$foldM$2(Function1,Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:99)
0x000070710f00d6d8.run(Object) (Unknown Source:-1)
Function1.apply(Object) (/purefun-core-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.core/Function1.class:32)
PureIO.lambda$foldM$2(Function1,Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:99)
0x000070710f00d6d8.run(Object) (Unknown Source:-1)
Function1.apply(Object) (/purefun-core-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.core/Function1.class:32)
PureIO.lambda$foldM$2(Function1,Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:99)
0x000070710f00d6d8.run(Object) (Unknown Source:-1)
Function1.apply(Object) (/purefun-core-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.core/Function1.class:32)
PureIO.lambda$foldM$2(Function1,Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:99)
0x000070710f00d6d8.run(Object) (Unknown Source:-1)
Function1.apply(Object) (/purefun-core-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.core/Function1.class:32)
PureIO.lambda$foldM$2(Function1,Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:99)
0x000070710f00d6d8.run(Object) (Unknown Source:-1)
Function1.apply(Object) (/purefun-core-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.core/Function1.class:32)
PureIO.lambda$foldM$2(Function1,Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:99)
0x000070710f00d6d8.run(Object) (Unknown Source:-1)
Function1.apply(Object) (/purefun-core-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.core/Function1.class:32)
PureIO.runAsync(Object,PureIO,PureIOConnection,CallStack,Promise) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:556)
PureIO.runAsync(Object,PureIO,PureIOConnection) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:513)
PureIO.runAsync(Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:55)
PureIO.provide(Object) (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/PureIO.class:51)
UIO.unsafeRunSync() (/purefun-effect-5.0-SNAPSHOT.jar/com.github.tonivade.purefun.effect/UIO.class:61)
perftest.run(UIO,String) (/home/vant/Descargas/kkk/perftest.java:251)
perftest.hashMap() (/home/vant/Descargas/kkk/perftest.java:95)
perftest.main(String[]) (/home/vant/Descargas/kkk/perftest.java:73)
tonivade commented 7 months ago

test to reproduce the issue: https://github.com/tonivade/purefun/pull/120

tonivade commented 7 months ago

The stack trace is meaningless :exploding_head: