I'm encountering an issue where variables from a separate plugin seems to infecting another. In the attached screenshot, I have one forward which prints the parameters, and in another I am operating on those forwards (not changing, as they are consts). It seems that some of the values overwrite those which are printed within the other.

Under what conditions can something like this occur?

Note: When the plugin on the right is disabled, this does not occur (expected).

Debugging a module issue can prove impossible without good repro code or a proper snippet. C++ modules can do basically anything to fuck things up, so if you really need good advice you should start giving us code.

My best guess would be that you are using get_amxstring() (which uses static buffers) for your forward parameters. This is dangerous because when plugin use natives from inside your callback, those natives will re-use those buffers for themselves. If this is the case here you should be using get_amxstring_r() to move the strings into your own buffers.

Debugging a module issue can prove impossible without good repro code or a proper snippet. C++ modules can do basically anything to fuck things up, so if you really need good advice you should start giving us code.

My best guess would be that you are using get_amxstring() (which uses static buffers) for your forward parameters. This is dangerous because when plugin use natives from inside your callback, those natives will re-use those buffers for themselves. If this is the case here you should be using get_amxstring_r() to move the strings into your own buffers.