Commit Graph

900 Commits

Author SHA1 Message Date
Ralf W. Grosse-Kunstleve
7296c39705 Introduce detail/using_smart_holder.h and remove pybindit::memory:: in most places. 2024-07-19 00:55:15 -07:00
Ralf W. Grosse-Kunstleve
583c07bffd Use std::unique_ptr<T> as default holder again. 2024-07-19 00:03:49 -07:00
Ralf W. Grosse-Kunstleve
58a1b75e43 Reinterpret detail::type_info::default_holder as "uses std::unique_ptr holder" (which is the original meaning, and compatible with the original smart_holder branch). 2024-07-18 22:45:56 -07:00
Ralf W. Grosse-Kunstleve
1ea1787745 Remove overlooked BAKEIN_BREAK in test_class_sh_property_non_owning.cpp,py (tests pass without any further changes). 2024-07-18 22:43:39 -07:00
Ralf W. Grosse-Kunstleve
6d8952a283 Merge branch 'master' into bakein 2024-07-18 17:41:47 -07:00
Ralf W. Grosse-Kunstleve
6d4805ced1
Small cleanup/refactoring in support of PR #5213 (#5251)
* Factor out detail/value_and_holder.h (from detail/type_caster_base.h)

This is in support of PR #5213:

* trampoline_self_life_support.h depends on value_and_holder.h

* type_caster_base.h depends on trampoline_self_life_support.h

* Fix a minor and inconsequential inconsistency in `copyable_holder_caster`: the correct `load_value()` return type is `void` (as defined in `type_caster_generic`)

For easy future reference, this is the long-standing inconsistency:

* dbf848aff7/include/pybind11/detail/type_caster_base.h (L634)

* dbf848aff7/include/pybind11/cast.h (L797)

Noticed in passing while working on PR #5213.

* Add `DANGER ZONE` comment in detail/init.h, similar to a comment added on the smart_holder branch (all the way back in 2021).
2024-07-18 17:34:06 -07:00
Henry Schreiner
a582ca8a8e
tests: run on pyodide (#4745)
* tests: run on pyodide

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* ci: use cibuildwheel for pyodide test

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* tests: revert changes to test_embed

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-07-18 14:50:38 -04:00
Ralf W. Grosse-Kunstleve
7fa6dd9d1c Merge branch 'bakein_prep_on_master' into bakein 2024-07-18 01:01:05 -07:00
Ralf W. Grosse-Kunstleve
5e30064ee6 Factor out detail/value_and_holder.h (from detail/type_caster_base.h)
This is in support of PR #5213:

* trampoline_self_life_support.h depends on value_and_holder.h

* type_caster_base.h depends on trampoline_self_life_support.h
2024-07-18 00:41:39 -07:00
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
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
092d236b4e Remove test_wip.cpp,py (not needed anymore). 2024-07-12 08:33:55 -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
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
e254264cc5 Restore original test_class_sh_disowning.py from smart_holder branch. 2024-07-09 15:09:39 -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
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
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
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
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
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
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
Ralf W. Grosse-Kunstleve
b201eece19 Remove pytest.skip("BAKEIN_BREAK: ...") in test_class_sh_mi_thunks.py (tests still fail) 2024-07-06 13:17:20 -07:00
Ralf W. Grosse-Kunstleve
70ba91f721 Inline smart_holder_type_caster_support, trampoline_self_life_support in type_caster_base.h: the organization of the existing code makes it very difficult to factor the added code properly. 2024-07-06 11:04:25 -07:00
Ralf W. Grosse-Kunstleve
2180dd4b6b Add test_class_sh_disowning_mi, test_class_sh_mi_thunks in CMakeLists.txt 2024-07-05 15:33:39 -07:00
Ralf W. Grosse-Kunstleve
34b8d360a2 Add pytest.skip("BAKEIN_BREAK: ...") in test_class_sh_disowning_mi.py 2024-07-05 15:27:05 -07:00
Ralf W. Grosse-Kunstleve
7173a3ab9d Bring in tests/test_class_sh_disowning_mi.cpp,py from smart_holder branch as-is (AssertionError). 2024-07-05 15:21:49 -07:00
Ralf W. Grosse-Kunstleve
3466ce5f63 Add pytest.skip("BAKEIN_BREAK: ...") in test_class_sh_mi_thunks.py 2024-07-05 15:20:07 -07:00
Ralf W. Grosse-Kunstleve
25c8edf994 Bring in tests/test_class_sh_mi_thunks.cpp,py from smart_holder branch as-is (Segmentation fault). 2024-07-05 14:47:39 -07:00
Ralf W. Grosse-Kunstleve
288442cd5c Add more test_class_sh_* in tests/CMakeLists.txt
All unit tests pass ASAN and MSAN testing with the Google-internal toolchain.
2024-07-05 14:40:43 -07:00
Ralf W. Grosse-Kunstleve
4ce1524c61 Bring in tests/test_class_sh_shared_ptr_copy_move.cpp,py from smart_holder branch as-is (does not build). 2024-07-05 14:25:44 -07:00
Ralf W. Grosse-Kunstleve
d9d96118e6 Bring in all tests/test_class_*.cpp,py from smart_holder branch as-is that pass without any further changes.
All unit tests pass ASAN and MSAN testing with the Google-internal toolchain.
2024-07-05 12:56:41 -07:00