Skip to content

Require file with coroutine startup causes error #2408

Open

Description

@semyon422

test.lua:

coroutine.wrap(function() print("hello") end)()

Requiring with luajit:

$ luajit -e "require'test'"
hello

Requiring in content_by_lua_block:

http {
    server {
        listen 8080;
        lua_code_cache off;

        location / {
            content_by_lua_block {
                require("test")
            }
        }
    }
}
$ curl localhost:8080
500 error html page

Error log:

2025/04/06 18:49:55 [error] 2931732#0: *2 lua entry thread aborted: runtime error: attempt to yield across C-call boundary
stack traceback:
coroutine 0:
	[C]: in function 'require'
	content_by_lua(nginx.conf:15):2: in main chunk, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "localhost:8080"

Activity

  1. gavin0616 commented on Aug 12, 2025

    @gavin0616
    Contributor

    This issue seems similar to the issue #376, it's a known limitation in LuaJIT.

    You can also refer to lua-coroutine-yieldingresuming.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions