Skip to content

Passing flat_hash_set, node_hash_map cross shared objects/binaries boundaries not supported #1128

Closed
@yuslepukhin

Description

@yuslepukhin

Describe the bug

This is a feature/documentation request. Passing hash sets, hash maps and perhaps some other objects cross shared object/binaries boundaries is not working/supported/documented.

I would expect this to be non-obvious for many. Although, some issues state that these are not replacements for std containers, the API and usage recommendations naturally position them close to std space. std containers instances are easily passed cross binaries.

I could not find statements either way in this respect with abseil, I feel it would be a right thing to do to provide such a statement. The code does not crash, but behaves incorrectly, that makes it hard to debug. A hash table returned contains all the entries and the debugger visualizer shows they are all there.

Steps to reproduce the bug

What version of Abseil are you using?
https://github.com/abseil/abseil-cpp/archive/refs/tags/20211102.0.zip

What operating system and version are you using
Windows 10

What compiler and version are you using?
Microsoft (R) C/C++ Optimizing Compiler Version 19.29.30141 for x86

What build system are you using?
cmake version 3.20.5

Additional context

main.zip

Output

Set Value: 4020 not found
Set Value: 4525 not found
Set Value: 7677 not found
Set Value: 5679 not found
Set Value: 4999 not found
Set Value: 1342 not found
Set Value: 5758 not found
Set Value: 4020 not found
Set Value: 4525 not found
Set Value: 7677 not found
Set Value: 5679 not found
Set Value: 4999 not found
Set Value: 1342 not found
Set Value: 5758 not found
Map Key: 4020 not found
Map Key: 4999 not found
Map Key: 7677 not found
Map Key: 4020 not found
Map Key: 4999 not found
Map Key: 7677 not found

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions