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

newest asyncdispatch recursion #6100

Closed
cheatfate opened this issue Jul 14, 2017 · 3 comments · Fixed by #6962
Closed

newest asyncdispatch recursion #6100

cheatfate opened this issue Jul 14, 2017 · 3 comments · Fixed by #6962
Labels
Async Everything related to Nim's async

Comments

@cheatfate
Copy link
Member

With latest changes to asyncdispatch this small piece of code causes Stack overflow.

import asyncdispatch

proc someProc(): Future[int] {.async.} =
  return 1

proc otherProc() {.async.} =
  var i = 0
  while i < 10_000:
    var c = await someProc()

when isMainModule:
  var t = otherProc()
  asyncCheck(t)
Traceback (most recent call last)
asyncrec.nim(12)         asyncrec
asyncmacro.nim(387)      otherProc
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
(1874 calls omitted) ...
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(41)       cb
asyncfutures.nim(212)    callback=
asyncfutures.nim(191)    addCallback
asyncfutures.nim(53)     callSoon
asyncmacro.nim(34)       cb
asyncrec.nim(9)          otherProcIter
asyncrec.nim(3)          someProc
asyncfutures.nim(61)     newFuture
gc.nim(618)              growObj
gc.nim(563)              growObj
alloc.nim(583)           rawAlloc
avltree.nim(67)          add
avltree.nim(67)          add
avltree.nim(67)          add
avltree.nim(67)          add
avltree.nim(67)          add
avltree.nim(67)          add
avltree.nim(67)          add
avltree.nim(67)          add
avltree.nim(67)          add
avltree.nim(67)          add
avltree.nim(67)          add
avltree.nim              add
Stack overflow
@dom96
Copy link
Contributor

dom96 commented Jul 14, 2017

Yes, we discussed this in the PR. You need to initialize the event loop.

@cheatfate
Copy link
Member Author

Just to be sure, you don't forget to fix it.

@cheatfate
Copy link
Member Author

Also if i understand PR correctly you introduced this bug again, to allow developers use Futures without Dispatcher. Earlier this use-case was prohibited, but with newest PR its possible again.
So this is an issue for new use-case of Futures usage.

yglukhov added a commit to yglukhov/Nim that referenced this issue Jul 14, 2017
@andreaferretti andreaferretti added the Async Everything related to Nim's async label Jul 17, 2017
yglukhov added a commit to yglukhov/Nim that referenced this issue Oct 27, 2017
yglukhov added a commit to yglukhov/Nim that referenced this issue Dec 1, 2017
dom96 added a commit that referenced this issue Dec 22, 2017
dom96 added a commit that referenced this issue Dec 22, 2017
@dom96 dom96 mentioned this issue Dec 22, 2017
dom96 added a commit that referenced this issue Dec 27, 2017
dom96 added a commit that referenced this issue Jan 10, 2018
yglukhov added a commit to yglukhov/Nim that referenced this issue Jan 11, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Async Everything related to Nim's async
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants