The accepted way to create these objects is to use constructor functions `_csv.reader()` and `_csv.writer()` with appropriate arguments. Objects that are created through type constructors `_csv.Reader` and `_csv.Writer` turn out to be not properly initialized, and operations on them easily lead to crash: ```python >>> import _csv >>> _csv.Writer().writerow([]) Segmentation fault (core dumped) ``` ```python >>> import _csv >>> list(_csv.Reader()) Segmentation fault (core dumped) ``` Although this is an internal detail, I'm sure that this should be fixed. I'll submit a PR shortly. The crash appears on 3.10, 3.11 and current main. <!-- gh-linked-prs --> ### Linked PRs * gh-104266 * gh-104278 <!-- /gh-linked-prs -->