Ralf W. Grosse-Kunstleve
89da1e2ef7
Use memcpy
instead of strcpy
to resolve MSVC errors.
2024-07-14 01:15:37 -07:00
Ralf W. Grosse-Kunstleve
c65d5dfaa8
Systematically use is_base_of<type_caster_generic, make_caster<D>>
in property_cpp_function<>
specializations.
2024-07-14 00:54:41 -07:00
Ralf W. Grosse-Kunstleve
3406be6877
New test_class_sh_property_bakein.py
...
Use cases in the wild:
* `test_readonly_char6_member()`: 4410c44ae6/torch/csrc/cuda/Module.cpp (L961)
* `test_readonly_const_char_ptr_member()`: 862a439a84/include/permonst.h (L43)
2024-07-13 23:46:36 -07:00
Ralf W. Grosse-Kunstleve
2600bb67c5
Remove test_ccccccccccccccccccccc.cpp,py (not needed anymore).
2024-07-13 01:15:09 -07:00
Ralf W. Grosse-Kunstleve
6fa0a2e439
PYBIND11_HAVE_HOLDER_CASTER_WITH_SMART_HOLDER_SUPPORT
...
Introduce two helper types:
* copyable_holder_caster_shared_ptr_with_smart_holder_support_enabled
* move_only_holder_caster_unique_ptr_with_smart_holder_support_enabled
2024-07-13 00:07:57 -07:00
Ralf W. Grosse-Kunstleve
092d236b4e
Remove test_wip.cpp,py (not needed anymore).
2024-07-12 08:33:55 -07:00
Ralf W. Grosse-Kunstleve
d021bb10aa
Remove redundant check_holder_compat()
no-op implementation.
2024-07-12 08:31:35 -07:00
Ralf W. Grosse-Kunstleve
63044cc199
Bring in default_holder_type
from smart_holder branch including using it in pybind11/stl_bind.h
2024-07-12 08:26:34 -07:00
Ralf W. Grosse-Kunstleve
d373a082ad
Remove remaining BAKEIN_BREAK in test_class_sh_property.cpp,py and adjust (simplify) the property_cpp_function<...unique_ptr...>::write
implementation (all tests pass).
...
This PR (#5213 ) at this commit also passes ASAN, MSAN, UBSAN testing with the Google-internal toolchain.
2024-07-12 02:38:14 -07:00
Ralf W. Grosse-Kunstleve
0b14d5bce9
test_class_sh_property.py test_valu_getter()
works without any further changes.
2024-07-12 02:24:27 -07:00
Ralf W. Grosse-Kunstleve
048e36df40
Bring in shared_ptr_with_responsible_parent()
from smart_holder branch:
...
smart_holder branch:
```
static std::shared_ptr<type> shared_ptr_from_python(handle responsible_parent)
```
Renamed in this commit:
```
static std::shared_ptr<type> shared_ptr_with_responsible_parent(handle responsible_parent)
```
Use in `property_cpp_function<>` specializations.
Fixes all 8 test failures introduced with the previous commit (1bcf572780
):
```
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_ro-expected0-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_rw-expected1-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_rw-expected1-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_ro-expected4-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_ro-expected4-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_rw-expected5-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_ro-expected0-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_rw-expected5-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
```
2024-07-12 02:11:09 -07:00
Ralf W. Grosse-Kunstleve
1bcf572780
First pass adapting all property_cpp_function<>
implementations. Still needs debugging and more testing:
...
```
========================================================= short test summary info ==========================================================
SKIPPED [2] test_class_sh_property.py:19: BAKEIN_BREAK: Failed: DID NOT RAISE <class 'ValueError'>
SKIPPED [1] test_class_sh_property.py:87: BAKEIN_BREAK: m_uqcp_readwrite does not build
SKIPPED [1] test_class_sh_property.py:140: BAKEIN_BREAK: m_uqmp_readwrite does not build
SKIPPED [1] test_class_sh_property.py:140: BAKEIN_BREAK: m_uqcp_readwrite does not build
SKIPPED [1] test_class_sh_basic.py:156: unconditional skip
SKIPPED [1] test_class_sh_property.py:87: BAKEIN_BREAK: m_uqmp_readwrite does not build
SKIPPED [1] test_stl.py:149: no <experimental/optional>
SKIPPED [1] test_smart_ptr.py:301: BAKEIN_EXPECTED: Failed: DID NOT RAISE <class 'RuntimeError'>
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_rw-expected1-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_rw-expected1-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_ro-expected0-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_ro-expected4-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_ro-expected4-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_rw-expected5-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_ro-expected0-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_rw-expected5-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
================================================ 8 failed, 1056 passed, 9 skipped in 3.96s =================================================
```
2024-07-10 15:21:09 -07:00
Ralf W. Grosse-Kunstleve
f852cf5714
Copy code property_cpp_function<>
code from smart_holder branch as-is. Ifdef out all but the "classic" implementation.
2024-07-10 15:16:59 -07:00
Ralf W. Grosse-Kunstleve
127058cb16
Replace loaded_v_h.type = get_type_info(typeid(type))
with loaded_v_h.type = typeinfo
in unique_ptr
type_caster
and remove pytest.skip()
in test_class_sh_disowning_mi.py
2024-07-10 08:18:24 -07:00
Ralf W. Grosse-Kunstleve
f855283be4
Restore test_class_sh_disowning_mi.cpp,py as it last worked with GHA (commit 575919098a
).
2024-07-09 20:52:03 -07:00
Ralf W. Grosse-Kunstleve
7e1eced440
test_ccccccccccccccccccccc
2024-07-09 20:51:06 -07:00
Ralf W. Grosse-Kunstleve
d3537e4236
Reducing 2: rename C++ namespace from class_sh_disowning_mi to wip.
2024-07-09 20:37:47 -07:00
Ralf W. Grosse-Kunstleve
1ea3855b22
Reducing 1.
2024-07-09 20:29:58 -07:00
Ralf W. Grosse-Kunstleve
575919098a
Remove all LOOOK in type_caster_base.h
2024-07-09 15:14:05 -07:00
Ralf W. Grosse-Kunstleve
e254264cc5
Restore original test_class_sh_disowning.py from smart_holder branch.
2024-07-09 15:09:39 -07:00
Ralf W. Grosse-Kunstleve
c6a87e8897
Call new load_helper.get_void_ptr_or_nullptr() instead of calling type_caster_generic::load_value() in shared_ptr and unique_ptr casters.
2024-07-09 15:07:10 -07:00
Ralf W. Grosse-Kunstleve
36bbac1b47
LOOOK to trace disowning
2024-07-09 14:09:38 -07:00
Ralf W. Grosse-Kunstleve
c5278145a0
Transfer test_mixed from test_class_sh_disowning to test_wip (preparation for debugging behavior difference).
2024-07-09 13:43:57 -07:00
Ralf W. Grosse-Kunstleve
c0f5078263
Pull in from smart_holder branch: Additional assert is_disowned()
in test_class_sh_disowning.py ( #5234 )
2024-07-09 13:31:59 -07:00
Ralf W. Grosse-Kunstleve
5a4442f583
pytest.skip() right before m.disown_b(...) in test_class_sh_property_non_owning.py. Remove pytest.skip() in test_class_sh_shared_ptr_copy_move.py and test_class_sh_property_non_owning.py
2024-07-09 11:31:57 -07:00
Ralf W. Grosse-Kunstleve
752626d607
SegFault 20.04 C++11 MinSizeRel all tests, but only first pass after git clean -fdx
...
NO SegFault 20.04 C++11 Debug all tests, even in first pass after git clean -fdx
BUT then suddenly SegFaults not reproducible anymore even with MinSizeRel!?
Current thread 0x00007f6c7165e740 (most recent call first):
File "/mounted_pybind11/tests/test_class_sh_shared_ptr_copy_move.py", line 9 in test_shptr_copy
line 9:
lst = m.test_ShPtr_copy()
This line was added after last observed SegFault
del mth
2024-07-09 08:39:48 -07:00
Ralf W. Grosse-Kunstleve
0296d33b1d
Stress test: use PYBIND11_SMART_HOLDER_PADDING unconditionally.
2024-07-08 17:43:31 -07:00
Ralf W. Grosse-Kunstleve
625c88b845
Add two more pytest.skip("BAKEIN_BREAK: Segmentation fault")
in test_class_sh_shared_ptr_copy_move.py
2024-07-08 16:12:44 -07:00
Ralf W. Grosse-Kunstleve
3ddfc58a2f
Add two pytest.skip("BAKEIN_BREAK: Segmentation fault")
in test_class_sh_shared_ptr_copy_move.py (suspected (!) holder mismatch).
2024-07-08 15:58:59 -07:00
Ralf W. Grosse-Kunstleve
cc86fb3256
test_class_sh_property_non_owning.py appears to cause memory corruption leading to failures in test_class_sh_shared_ptr_copy_move.py:
...
* Disable all tests in test_class_sh_property_non_owning.py
* Disable only `test_properties()` in test_class_sh_shared_ptr_copy_move.py
* Go back to original .github/workflows/ci.yml
2024-07-08 15:18:17 -07:00
Ralf W. Grosse-Kunstleve
91d40035a2
Disable for now (to be debugged later): CI / 🐍 3 • GCC 7 • C++17• x64
2024-07-07 13:27:16 -07:00
Ralf W. Grosse-Kunstleve
68c9d1311f
Bring in tests/*class_sh_module_local* from smart_holder branch as-is (tests pass without any further changes).
2024-07-07 13:25:50 -07:00
Ralf W. Grosse-Kunstleve
9e3bee066b
Bring in tests/test_classh_mock.cpp,py from smart_holder branch as-is (tests pass without any further changes).
2024-07-07 13:17:27 -07:00
Ralf W. Grosse-Kunstleve
ac055a41fc
Add BAKEIN_BREAK
in test_class_sh_property_non_owning.cpp,py
2024-07-07 13:04:41 -07:00
Ralf W. Grosse-Kunstleve
f52456e07a
Bring in tests/test_class_sh_property_non_owning.cpp,py from smart_holder branch as-is (does not build).
2024-07-07 13:01:30 -07:00
Ralf W. Grosse-Kunstleve
b89ec00202
Add BAKEIN_BREAK
in test_class_sh_property.cpp,py
2024-07-07 12:59:17 -07:00
Ralf W. Grosse-Kunstleve
c7bd78ccd6
Bring in tests/test_class_sh_property.cpp,py from smart_holder branch as-is (does not build).
2024-07-07 12:58:00 -07:00
Ralf W. Grosse-Kunstleve
c453013583
Move pytest.skip("BAKEIN_BREAK: ...)
in test_class_sh_shared_ptr_copy_move.py to top level (still appears to fail on ~17 platforms).
2024-07-07 10:25:24 -07:00
Ralf W. Grosse-Kunstleve
f1f0eef3cb
Remove cruft from smart_holder_type_caster_support::load_helper<>
2024-07-07 10:14:06 -07:00
Ralf W. Grosse-Kunstleve
7fc2ef4be5
Merge branch 'master' into bakein
2024-07-07 09:54:59 -07:00
Ralf W. Grosse-Kunstleve
89c58c4f7f
Add pytest.skip("BAKEIN_BREAK: ...)
in test_class_sh_shared_ptr_copy_move.py test_properties()
(appears to fail on ~17 platforms).
2024-07-07 09:54:41 -07:00
Ralf W. Grosse-Kunstleve
b82892ae6f
Resolve clang-tidy errors and warnings.
2024-07-07 09:43:53 -07:00
Ralf W. Grosse-Kunstleve
56019a2d68
Clean out debug code in test_class_sh_mi_thunks.cpp,py
2024-07-07 09:06:00 -07:00
Ralf W. Grosse-Kunstleve
011c795b5f
test_class_sh_disowning.py: BAKEIN_WIP: Why is the behavior different?
2024-07-07 09:03:00 -07:00
Ralf W. Grosse-Kunstleve
bd37d69b67
Bug fix: typeid(cpptype)
-> cpptype->name()
2024-07-07 08:54:55 -07:00
Ralf W. Grosse-Kunstleve
1158dbc57b
Remove pytest.skip("BAKEIN_BREAK: ...")
in test_class_sh_disowning_mi.py (tests pass without any further changes).
2024-07-07 08:47:04 -07:00
Ralf W. Grosse-Kunstleve
042ea81fbe
Pass thunk-corrected pointer to loaded_as_unique_ptr(). With this all test_class_sh_mi_thunks tests pass.
2024-07-07 07:34:00 -07:00
Ralf W. Grosse-Kunstleve
103666ad40
Micro-scale cleanup/consolidation.
2024-07-07 06:58:07 -07:00
Ralf W. Grosse-Kunstleve
1fbc4a2f54
Clean out dead-end and debug code.
2024-07-07 06:46:04 -07:00
Ralf W. Grosse-Kunstleve
bb6b429a2f
MESSY but success for: test_get_vec_size_raw_shared[get_drvd_as_base0_raw_ptr-vec_size_base0_shared_ptr]
...
scons -j 48 selected_test_cpp=test_class_sh_mi_thunks.cpp && "$(cat PYROOT)"/bin/python3 $HOME/clone/pybind11_scons/run_tests.py ../pybind11 test_class_sh_mi_thunks.py -s -vv -k 'test_get_vec_size_raw_shared[get_drvd_as_base0_raw_ptr-vec_size_base0_shared_ptr]'
```
=========================================================== test session starts ============================================================
platform linux -- Python 3.11.8, pytest-7.4.4, pluggy-1.5.0 -- /usr/bin/python3
cachedir: .pytest_cache
C++ Info: 13.2.0 C++20 __pybind11_internals_v10000000_gcc_libstdcpp_cxxabi1018__ PYBIND11_SIMPLE_GIL_MANAGEMENT=False PYBIND11_NUMPY_1_ONLY=False
rootdir: /usr/local/google/home/rwgk/forked/pybind11/tests
configfile: pytest.ini
plugins: xdist-3.5.0
collected 10 items / 9 deselected / 1 selected
test_class_sh_mi_thunks.py::test_get_vec_size_raw_shared[get_drvd_as_base0_raw_ptr-vec_size_base0_shared_ptr]
LOOOK A
LOOOK get raw drvd 47927280
LOOOK get raw base 47927312
LOOOK B
LOOOK shd load(src, convert) X
LOOOK shd try_implicit_casts(src, convert) Q
LOOOK shd try_implicit_casts(src, convert) R
LOOOK shd load(src, convert) X
LOOOK shd load_value(v_h) ENTRY
LOOOK shd load_value(v_h) A
LOOOK shd load_value(v_h) B
LOOOK shd load(src, convert) Y 47927280
LOOOK shd try_implicit_casts(src, convert) S
LOOOK shd load(src, convert) Y 47927312
LOOOK operator std::shared_ptr<type> & A 47927312 /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../cast.h:891
LOOOK /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:838
LOOOK /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:842
LOOOK operator std::shared_ptr<type> & B 47927312 /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../cast.h:893
LOOOK shd const Base0 *obj 47927312
LOOOK shd const auto *obj_der 47927280
LOOOK C
PASSED
===================================================== 1 passed, 9 deselected in 0.01s ======================================================
```
2024-07-07 06:31:23 -07:00