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

Bug with reductions when ckJustMigrated is implemented in user code #3826

Open
kavithachandrasekar opened this issue Jun 20, 2024 · 1 comment
Labels
Bug Something isn't working

Comments

@kavithachandrasekar
Copy link
Contributor

kavithachandrasekar commented Jun 20, 2024

When user code implements ckJustMigrated to track migrations after migrateMe, reductions do not work. Instead of calling ArrayElement::ckJustMigrated, the runtime calls the user's ckJustMigrated. This results in the object count on PEs for reductions not being correctly updated when objects migrate in. Future reduction contributions result in a hang. The issue can be reproduced by calling migrateMe and implementing ckJustMigrated in user code and doing a few reduction calls after ckJustMigrated.

@kavithachandrasekar kavithachandrasekar added the Bug Something isn't working label Jun 20, 2024
@olawlor
Copy link
Contributor

olawlor commented Aug 13, 2024

I believe you need to call ArrayElement::ckJustMigrated() from your ckJustMigrated method if you override that virtual method.

This is one representative of the "didn't call the superclass" bugs that can hit constructors and virtual methods in OOP C++.

(20+ years ago when I was writing this stuff, I really should have made all the user-facing virtual override methods have empty default implementations, and used inaccessible system methods for the critical system plumbing, but here we are!)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants