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

Segfault when calling solveConcurrent() when SCIP is compiled with TPI=tny #883

Open
waweber opened this issue Aug 23, 2024 · 1 comment

Comments

@waweber
Copy link

waweber commented Aug 23, 2024

Describe the bug
Calling solveConcurrent() segfaults when using SCIP with the tinycthread task implementation.

To Reproduce
Run a model with solveConcurrent() with SCIP compiled with this option.

Expected behavior
The solver should run without error.

System
Fedora Linux 40, SCIP 9.1.0, compiled from source

Additional context

solveConcurrent() calls SCIPtpiGetNumThreads(), but SCIPtpiGetNumThreads() for tinycthread requires SCIPsyncstoreInit to be called first, otherwise a null pointer dereference occurs. SCIPsyncstoreInit is normally called by SCIPsolveConcurrent().

Removing the check in solveConcurrent() results in the correct behavior.

I also tried with OpenMP as the task implementation, but PySCIPOpt reported that no task processing implementation was compiled. I suspect this is also due to SCIPtpiGetNumThreads() being called before the required initialization happens.

@Opt-Mucca
Copy link
Collaborator

Thanks for pointing this out! We're aware of the issue, and have been working on it.

If you compile the current master branch of SCIP then this should hopefully be resolved. If not then we will look into it more.
We are waiting for the next release of SCIP and then we will be releasing PySCIPOpt by default with tny via PyPI.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants