Skip to content

[BUG] Concurrent map read/write in template render #2

@moritzrinow

Description

@moritzrinow

Hi, I've discovered a concurrency issue while rendering the same Template instance with a rate of 100/s:

fatal error: concurrent map read and map write
...
internal/runtime/maps.fatal({0x7ff7310261d5?, 0x7ff730220a6c?})
...
github.com/Notifuse/liquidgo/liquid.(*Context).FindVariable(0xc000465b00, {0xc0002e8470, 0x7}, 0x0)
        ...github.com/!notifuse/liquidgo@v0.0.0-20251124135804-bb1578ffeff3/liquid/context.go:528 +0x165
github.com/Notifuse/liquidgo/liquid.(*VariableLookup).Evaluate(0xc0002f2060, 0xc000465b00)
        ...github.com/!notifuse/liquidgo@v0.0.0-20251124135804-bb1578ffeff3/liquid/variable_lookup.go:215 +0x5b
github.com/Notifuse/liquidgo/liquid.(*Context).Evaluate(0x7ff730e6ad80?, {0x7ff730f1b2a0?, 0xc0002f2060?})
        ...github.com/!notifuse/liquidgo@v0.0.0-20251124135804-bb1578ffeff3/liquid/context.go:478 +0x45
github.com/Notifuse/liquidgo/liquid.(*Variable).Render(0xc00028bbd0, {0x7ff731223620, 0xc000465b00})
        ...github.com/!notifuse/liquidgo@v0.0.0-20251124135804-bb1578ffeff3/liquid/variable.go:352 +0x46
github.com/Notifuse/liquidgo/liquid/tags.(*AssignTag).RenderToOutputBuffer(0xc0002a6960, {0x7ff731223620, 0xc000465b00}, 0x0?)
        ...github.com/!notifuse/liquidgo@v0.0.0-20251124135804-bb1578ffeff3/liquid/tags/assign.go:53 +0x2d
github.com/Notifuse/liquidgo/liquid.(*BlockBody).renderNodeOptimized(0xc0001f3980?, {0x7ff730fa6d20, 0xc0002a6960}, {0x7ff731223620, 0xc000465b00}, 0xc0000495b0, 0x0, 0xc000465b00)
        ...github.com/!notifuse/liquidgo@v0.0.0-20251124135804-bb1578ffeff3/liquid/block_body.go:569 +0x682
github.com/Notifuse/liquidgo/liquid.(*BlockBody).RenderToOutputBuffer(0xc0002a6300, {0x7ff731223620, 0xc000465b00?}, 0xc0000495b0)
        ...github.com/!notifuse/liquidgo@v0.0.0-20251124135804-bb1578ffeff3/liquid/block_body.go:467 +0x265
github.com/Notifuse/liquidgo/liquid.(*Document).RenderToOutputBuffer(0xc000205f00?, {0x7ff731223620?, 0xc000465b00?}, 0xc000355700?)
        ...github.com/!notifuse/liquidgo@v0.0.0-20251124135804-bb1578ffeff3/liquid/document.go:126 +0x97
github.com/Notifuse/liquidgo/liquid.(*Template).Render(0xc000205f00, {0x7ff730edfc60, 0xc0002f39b0}, 0xc000355700)
        ...github.com/!notifuse/liquidgo@v0.0.0-20251124135804-bb1578ffeff3/liquid/template.go:348 +0x2f4
github.com/Notifuse/liquidgo/liquid.(*Template).RenderBang(...)

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