Skip to content

CI: Debug CI ImportError #47310

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

Closed
wants to merge 4 commits into from
Closed

Conversation

rhshadrach
Copy link
Member

  • closes #xxxx (Replace xxxx with the Github issue number)
  • Tests added and passed if fixing a bug or adding a new feature
  • All code checks passed.
  • Added type annotations to new arguments/methods/functions.
  • Added an entry in the latest doc/source/whatsnew/vX.X.X.rst file if fixing a bug or adding a new feature.

@rhshadrach
Copy link
Member Author

Last build of Docstrings and typing validation failed but ASV Benchmarks was successful.

Good build:

Symbols in np_datetime.o
build/temp.linux-x86_64-cpython-38/pandas/_libs/tslibs/src/datetime/np_datetime.o:     file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l    df *ABS*	0000000000000000 np_datetime.c
0000000000000000 l    d  .text.is_leapyear	0000000000000000 .text.is_leapyear
0000000000000000 l    d  .text.set_datetimestruct_days	0000000000000000 .text.set_datetimestruct_days
0000000000000000 l     F .text.set_datetimestruct_days	000000000000018f set_datetimestruct_days
0000000000000000 l    d  .text.add_minutes_to_datetimestruct	0000000000000000 .text.add_minutes_to_datetimestruct
0000000000000000 l    d  .text.get_datetimestruct_days	0000000000000000 .text.get_datetimestruct_days
0000000000000000 l    d  .text.add_seconds_to_datetimestruct	0000000000000000 .text.add_seconds_to_datetimestruct
0000000000000000 l    d  .text.cmp_npy_datetimestruct	0000000000000000 .text.cmp_npy_datetimestruct
0000000000000000 l    d  .text.extract_utc_offset	0000000000000000 .text.extract_utc_offset
0000000000000000 l    d  .text.convert_pydatetime_to_datetimestruct	0000000000000000 .text.convert_pydatetime_to_datetimestruct
0000000000000000 l    d  .text.npy_datetimestruct_to_datetime	0000000000000000 .text.npy_datetimestruct_to_datetime
0000000000000000 l    d  .rodata	0000000000000000 .rodata
0000000000000000 l    d  .text.extract_unit	0000000000000000 .text.extract_unit
0000000000000000 l    d  .text.pandas_datetime_to_datetimestruct	0000000000000000 .text.pandas_datetime_to_datetimestruct
0000000000000000 l    d  .text.pandas_timedelta_to_timedeltastruct	0000000000000000 .text.pandas_timedelta_to_timedeltastruct
0000000000000000 l    d  .text.get_datetime_metadata_from_dtype	0000000000000000 .text.get_datetime_metadata_from_dtype
0000000000000000 l       .rodata.cst16	0000000000000000 .LC0
0000000000000020 l       .rodata.cst16	0000000000000000 .LC2
00000000000000[10](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:11) l       .rodata.cst16	0000000000000000 .LC1
0000000000000030 l       .rodata.cst16	0000000000000000 .LC3
0000000000000040 l       .rodata.cst16	0000000000000000 .LC4
00000000000000b0 l       .rodata.cst16	0000000000000000 .LC[11](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:12)
00000000000000c0 l       .rodata.cst16	0000000000000000 .LC[12](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:13)
00000000000000d0 l       .rodata.cst16	0000000000000000 .LC[13](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:14)
00000000000000e0 l       .rodata.cst16	0000000000000000 .LC[14](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:15)
0000000000000070 l       .rodata.cst16	0000000000000000 .LC7
0000000000000060 l       .rodata.cst16	0000000000000000 .LC6
00000000000000a0 l       .rodata.cst16	0000000000000000 .LC10
00000000000000f0 l       .rodata.cst16	0000000000000000 .LC[15](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:16)
0000000000000100 l       .rodata.cst[16](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:17)	0000000000000000 .LC16
0000000000000050 l       .rodata.cst16	0000000000000000 .LC5
0000000000000080 l       .rodata.cst16	0000000000000000 .LC8
0000000000000090 l       .rodata.cst16	0000000000000000 .LC9
0000000000000000 l       .rodata.str1.1	0000000000000000 .LC[17](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:18)
0000000000000007 l       .rodata.str1.1	0000000000000000 .LC[18](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:19)
0000000000000009 l       .rodata.str1.1	0000000000000000 .LC[19](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:20)
0000000000000000 l       .rodata.cst8	0000000000000000 .LC[20](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:21)
0000000000000013 l       .rodata.str1.1	0000000000000000 .LC[21](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:22)
0000000000000018 l       .rodata.str1.1	0000000000000000 .LC[22](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:23)
000000000000001e l       .rodata.str1.1	0000000000000000 .LC[23](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:24)
0000000000000022 l       .rodata.str1.1	0000000000000000 .LC[24](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:25)
0000000000000027 l       .rodata.str1.1	0000000000000000 .LC[25](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:26)
000000000000002e l       .rodata.str1.1	0000000000000000 .LC[26](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:27)
0000000000000035 l       .rodata.str1.1	0000000000000000 .LC[27](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:28)
0000000000000041 l       .rodata.str1.1	0000000000000000 .LC[28](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:29)
0000000000000042 l       .rodata.str1.1	0000000000000000 .LC[29](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:30)
0000000000000000 l       .rodata.str1.8	0000000000000000 .LC[30](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:31)
0000000000000030 l       .rodata.str1.8	0000000000000000 .LC32
0000000000000110 l       .rodata.cst16	0000000000000000 .LC[31](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:32)
0000000000000070 l       .rodata.str1.8	0000000000000000 .LC[33](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:34)
0000000000000000 g     F .text.is_leapyear	0000000000000071 is_leapyear
0000000000000000         *UND*	0000000000000000 _GLOBAL_OFFSET_TABLE_
00000000000000a0 g     O .rodata	0000000000000060 days_per_month_table
0000000000000000 g     F .text.add_minutes_to_datetimestruct	00000000000004a8 add_minutes_to_datetimestruct
0000000000000000 g     F .text.get_datetimestruct_days	00000000000001a9 get_datetimestruct_days
0000000000000000 g     F .text.add_seconds_to_datetimestruct	000000000000008f .hidden add_seconds_to_datetimestruct
0000000000000000 g     F .text.cmp_npy_datetimestruct	00000000000000ca cmp_npy_datetimestruct
0000000000000000 g     F .text.extract_utc_offset	0000000000000085 extract_utc_offset
0000000000000000         *UND*	0000000000000000 PyObject_GetAttrString
0000000000000000         *UND*	0000000000000000 _Py_NoneStruct
0000000000000000         *UND*	0000000000000000 PyObject_CallMethod
0000000000000000         *UND*	0000000000000000 _Py_Dealloc
0000000000000000 g     F .text.convert_pydatetime_to_datetimestruct	000000000000029c convert_pydatetime_to_datetimestruct
0000000000000000         *UND*	0000000000000000 PyLong_AsLong
0000000000000000         *UND*	0000000000000000 PyObject_HasAttrString
0000000000000000         *UND*	0000000000000000 PyNumber_Long
0000000000000000         *UND*	0000000000000000 PyErr_Occurred
0000000000000000 g     F .text.npy_datetimestruct_to_datetime	00000000000002f3 npy_datetimestruct_to_datetime
0000000000000000         *UND*	0000000000000000 PyExc_ValueError
0000000000000000         *UND*	0000000000000000 PyErr_SetString
0000000000000000 g     F .text.extract_unit	0000000000000017 extract_unit
0000000000000000 g     F .text.pandas_datetime_to_datetimestruct	000000000000042f pandas_datetime_to_datetimestruct
0000000000000000         *UND*	0000000000000000 PyExc_RuntimeError
0000000000000000 g     F .text.pandas_timedelta_to_timedeltastruct	0000000000000915 pandas_timedelta_to_timedeltastruct
0000000000000000 g     F .text.get_datetime_metadata_from_dtype	0000000000000009 get_datetime_metadata_from_dtype
0000000000000100 g     O .rodata	0000000000000028 _M_MAX_DTS
0000000000000140 g     O .rodata	0000000000000028 _S_MAX_DTS
0000000000000180 g     O .rodata	0000000000000028 _MS_MAX_DTS
00000000000001c0 g     O .rodata	0000000000000028 _US_MAX_DTS
0000000000000200 g     O .rodata	0000000000000028 _NS_MAX_DTS
0000000000000240 g     O .rodata	0000000000000028 _PS_MAX_DTS
0000000000000280 g     O .rodata	0000000000000028 _FS_MAX_DTS
00000000000002c0 g     O .rodata	0000000000000028 _AS_MAX_DTS
0000000000000300 g     O .rodata	0000000000000028 _M_MIN_DTS
0000000000000[34](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:35)0 g     O .rodata	0000000000000028 _S_MIN_DTS
0000000000000[38](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:39)0 g     O .rodata	0000000000000028 _MS_MIN_DTS
00000000000003c0 g     O .rodata	0000000000000028 _US_MIN_DTS
0000000000000[40](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:41)0 g     O .rodata	0000000000000028 _NS_MIN_DTS
0000000000000[44](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:45)0 g     O .rodata	0000000000000028 _PS_MIN_DTS
0000000000000[48](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:7:49)0 g     O .rodata	0000000000000028 _FS_MIN_DTS
00000000000004c0 g     O .rodata	0000000000000028 _AS_MIN_DTS
Symbols in np_datetime.so
Run nm -gD pandas/_libs/tslibs/np_datetime.cpython-38-x86_64-linux-gnu.so
                 U PyBaseObject_Type
                 U PyBytes_FromStringAndSize
                 U PyCFunction_NewEx
                 U PyCFunction_Type
                 U PyCapsule_GetPointer
                 U PyCapsule_Import
                 U PyCapsule_New
                 U PyCapsule_Type
                 U PyCode_New
                 U PyCode_NewEmpty
                 U PyDict_GetItemString
                 U PyDict_New
                 U PyDict_Next
                 U PyDict_SetItem
                 U PyDict_SetItemString
                 U PyDict_Size
                 U PyErr_Clear
                 U PyErr_ExceptionMatches
                 U PyErr_Format
                 U PyErr_GivenExceptionMatches
                 U PyErr_NormalizeException
                 U PyErr_Occurred
                 U PyErr_SetObject
                 U PyErr_SetString
                 U PyErr_WarnEx
                 U PyErr_WarnFormat
                 U PyEval_EvalCodeEx
                 U PyEval_EvalFrameEx
                 U PyExc_AttributeError
                 U PyExc_DeprecationWarning
                 U PyExc_Exception
                 U PyExc_ImportError
                 U PyExc_NameError
                 U PyExc_OverflowError
                 U PyExc_RuntimeError
                 U PyExc_SystemError
                 U PyExc_TypeError
                 U PyExc_ValueError
                 U PyException_SetCause
                 U PyException_SetTraceback
                 U PyFloat_Type
                 U PyFrame_New
                 U PyFrame_Type
                 U PyFunction_Type
                 U PyImport_AddModule
                 U PyImport_GetModuleDict
                 U PyImport_ImportModule
                 U PyImport_ImportModuleLevelObject
0000000000006d3f T PyInit_np_datetime
                 U PyInterpreterState_GetID
                 U PyList_New
                 U PyLong_AsLong
                 U PyLong_AsSsize_t
                 U PyLong_FromLong
                 U PyLong_Type
                 U PyMem_Malloc
                 U PyMem_Realloc
                 U PyMethod_Type
                 U PyModuleDef_Init
                 U PyModule_AddObject
                 U PyModule_GetDict
                 U PyModule_NewObject
                 U PyNumber_Index
                 U PyNumber_Long
                 U PyOS_snprintf
                 U PyObject_Call
                 U PyObject_CallMethod
                 U PyObject_CallObject
                 U PyObject_Format
                 U PyObject_GetAttr
                 U PyObject_GetAttrString
                 U PyObject_HasAttrString
                 U PyObject_Hash
                 U PyObject_IsTrue
                 U PyObject_Not
                 U PyObject_RichCompare
                 U PyObject_SetAttr
                 U PyObject_SetAttrString
                 U PyObject_SetItem
                 U PyThreadState_Get
                 U PyTraceBack_Here
                 U PyTuple_New
                 U PyTuple_Pack
                 U PyType_IsSubtype
                 U PyType_Type
                 U PyUnicode_AsUTF[8](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:8:9)
                 U PyUnicode_AsUTF8AndSize
                 U PyUnicode_Compare
                 U PyUnicode_Concat
                 U PyUnicode_Decode
                 U PyUnicode_FromFormat
                 U PyUnicode_FromString
                 U PyUnicode_FromStringAndSize
                 U PyUnicode_InternFromString
                 U PyUnicode_New
                 U PyUnicode_Type
                 U Py_GetVersion
0000000000013a20 R _AS_MAX_DTS
0000000000013c20 R _AS_MIN_DTS
0000000000013[9](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:8:10)e0 R _FS_MAX_DTS
0000000000013be0 R _FS_MIN_DTS
                 w _ITM_deregisterTMCloneTable
                 w _ITM_registerTMCloneTable
00000000000138e0 R _MS_MAX_DTS
0000000000013ae0 R _MS_MIN_DTS
0000000000013860 R _M_MAX_DTS
0000000000013a60 R _M_MIN_DTS
0000000000013960 R _NS_MAX_DTS
0000000000013b60 R _NS_MIN_DTS
00000000000139a0 R _PS_MAX_DTS
0000000000013ba0 R _PS_MIN_DTS
                 U _PyDict_GetItem_KnownHash
                 U _PyDict_NewPresized
                 U _PyFloat_FormatAdvancedWriter
                 U _PyLong_FormatAdvancedWriter
                 U _PyObject_GetDictPtr
                 U _PyThreadState_UncheckedGet
                 U _PyUnicodeWriter_Dealloc
                 U _PyUnicodeWriter_Finish
                 U _PyUnicodeWriter_Init
                 U _PyUnicode_FastCopyCharacters
                 U _PyUnicode_Ready
                 U _Py_CheckRecursionLimit
                 U _Py_CheckRecursiveCall
                 U _Py_Dealloc
                 U _Py_FalseStruct
                 U _Py_NoneStruct
                 U _Py_TrueStruct
00000000000138a0 R _S_MAX_DTS
0000000000013aa0 R _S_MIN_DTS
0000000000013920 R _US_MAX_DTS
0000000000013b20 R _US_MIN_DTS
                 U __ctype_b_loc@GLIBC_2.3
                 w __cxa_finalize@GLIBC_2.2.5
                 w __gmon_start__
0000000000017d30 B __pyx_module_is_main_pandas___libs__tslibs__np_datetime
                 U __snprintf_chk@GLIBC_2.3.4
                 U __stack_chk_fail@GLIBC_2.4
00000000000119dc T _fini
0000000000005000 T _init
000000000000ea00 T add_minutes_to_datetimestruct
000000000000e7e0 T char_to_string
000000000000f060 T cmp_npy_datetimestruct
000000000000f1c0 T convert_pydatetime_to_datetimestruct
0000000000013800 R days_per_month_table
000000000000f760 T extract_unit
000000000000f130 T extract_utc_offset
00000000000[10](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:8:11)f30 T get_datetime_iso_8601_strlen
00000000000104d0 T get_datetime_metadata_from_dtype
000000000000eeb0 T get_datetimestruct_days
000000000000e7f0 T is_leapyear
00000000000[11](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:8:12)030 T make_iso_8601_datetime
000000000001[18](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:8:19)c0 T make_iso_8601_timedelta
                 U memcmp@GLIBC_2.2.5
                 U memcpy@GLIBC_2.2.5
000000000000f[46](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:8:47)0 T npy_datetimestruct_to_datetime
000000000000f780 T pandas_datetime_to_datetimestruct
000000000000fbb0 T pandas_timedelta_to_timedeltastruct
00000000000104e0 T parse_iso_8[60](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:8:61)1_datetime
Symbols in timestamps.so
Run nm -gD pandas/_libs/tslibs/timestamps.cpython-38-x86_64-linux-gnu.so
                 U PyArg_UnpackTuple
                 U PyBaseObject_Type
                 U PyBool_Type
                 U PyBuffer_Release
                 U PyBytes_FromString
                 U PyBytes_FromStringAndSize
                 U PyBytes_Type
                 U PyCFunction_NewEx
                 U PyCFunction_Type
                 U PyCapsule_GetName
                 U PyCapsule_GetPointer
                 U PyCapsule_Import
                 U PyCapsule_IsValid
                 U PyCapsule_New
                 U PyCapsule_Type
                 U PyClassMethod_New
                 U PyCode_New
                 U PyCode_NewEmpty
                 U PyCoro_Type
                 U PyDescr_NewClassMethod
                 U PyDict_Copy
                 U PyDict_DelItem
                 U PyDict_GetItemString
                 U PyDict_GetItemWithError
                 U PyDict_New
                 U PyDict_Next
                 U PyDict_SetItem
                 U PyDict_SetItemString
                 U PyDict_Size
                 U PyDict_Type
                 U PyErr_Clear
                 U PyErr_ExceptionMatches
                 U PyErr_Fetch
                 U PyErr_Format
                 U PyErr_GivenExceptionMatches
                 U PyErr_NoMemory
                 U PyErr_NormalizeException
                 U PyErr_Occurred
                 U PyErr_PrintEx
                 U PyErr_Restore
                 U PyErr_SetNone
                 U PyErr_SetObject
                 U PyErr_SetString
                 U PyErr_WarnEx
                 U PyErr_WarnFormat
                 U PyErr_WriteUnraisable
                 U PyEval_EvalCodeEx
                 U PyEval_EvalFrameEx
                 U PyExc_AssertionError
                 U PyExc_AttributeError
                 U PyExc_BufferError
                 U PyExc_DeprecationWarning
                 U PyExc_Exception
                 U PyExc_GeneratorExit
                 U PyExc_ImportError
                 U PyExc_IndexError
                 U PyExc_NameError
                 U PyExc_NotImplementedError
                 U PyExc_OverflowError
                 U PyExc_RuntimeError
                 U PyExc_RuntimeWarning
                 U PyExc_StopIteration
                 U PyExc_SystemError
                 U PyExc_TypeError
                 U PyExc_UnboundLocalError
                 U PyExc_ValueError
                 U PyExc_ZeroDivisionError
                 U PyException_SetCause
                 U PyException_SetTraceback
                 U PyFloat_FromDouble
                 U PyFloat_Type
                 U PyFrame_New
                 U PyFrame_Type
                 U PyFunction_Type
                 U PyGILState_Ensure
                 U PyGILState_Release
                 U PyGen_Type
                 U PyImport_AddModule
                 U PyImport_GetModuleDict
                 U PyImport_ImportModule
                 U PyImport_ImportModuleLevelObject
000000000001734a T PyInit_timestamps
                 U PyInterpreterState_GetID
                 U PyList_Append
                 U PyList_AsTuple
                 U PyList_New
                 U PyList_Type
                 U PyLong_AsDouble
                 U PyLong_AsLong
                 U PyLong_AsSsize_t
                 U PyLong_FromLong
                 U PyLong_FromSsize_t
                 U PyLong_Type
                 U PyMem_Free
                 U PyMem_Malloc
                 U PyMem_Realloc
                 U PyMethodDescr_Type
                 U PyMethod_New
                 U PyMethod_Type
                 U PyModuleDef_Init
                 U PyModule_AddObject
                 U PyModule_GetDict
                 U PyModule_GetName
                 U PyModule_NewObject
                 U PyNumber_Add
                 U PyNumber_FloorDivide
                 U PyNumber_InPlaceAdd
                 U PyNumber_InPlaceMultiply
                 U PyNumber_InPlaceSubtract
                 U PyNumber_Index
                 U PyNumber_Long
                 U PyNumber_Multiply
                 U PyNumber_Negative
                 U PyNumber_Remainder
                 U PyNumber_Subtract
                 U PyNumber_TrueDivide
                 U PyOS_snprintf
                 U PyObject_Call
                 U PyObject_CallFinalizerFromDealloc
                 U PyObject_CallFunctionObjArgs
                 U PyObject_CallMethod
                 U PyObject_CallObject
                 U PyObject_ClearWeakRefs
                 U PyObject_Format
                 U PyObject_Free
                 U PyObject_GC_Del
                 U PyObject_GC_Track
                 U PyObject_GC_UnTrack
                 U PyObject_GenericGetAttr
                 U PyObject_GetAttr
                 U PyObject_GetAttrString
                 U PyObject_GetBuffer
                 U PyObject_GetItem
                 U PyObject_GetIter
                 U PyObject_HasAttrString
                 U PyObject_Hash
                 U PyObject_IsSubclass
                 U PyObject_IsTrue
                 U PyObject_Malloc
                 U PyObject_Not
                 U PyObject_RichCompare
                 U PyObject_RichCompareBool
                 U PyObject_SelfIter
                 U PyObject_SetAttr
                 U PyObject_SetAttrString
                 U PyObject_SetItem
                 U PyObject_Size
                 U PyRun_StringFlags
                 U PySequence_Contains
                 U PySequence_Tuple
                 U PySlice_New
                 U PySlice_Type
                 U PyThreadState_Get
                 U PyThread_allocate_lock
                 U PyThread_free_lock
                 U PyTraceBack_Here
                 U PyTraceBack_Type
                 U PyTuple_GetItem
                 U PyTuple_GetSlice
                 U PyTuple_New
                 U PyTuple_Pack
                 U PyTuple_Type
                 U PyType_GetFlags
                 U PyType_IsSubtype
                 U PyType_Modified
                 U PyType_Ready
                 U PyType_Type
                 U PyUnicode_AsUTF[8](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:9:9)
                 U PyUnicode_Compare
                 U PyUnicode_Concat
                 U PyUnicode_Decode
                 U PyUnicode_DecodeASCII
                 U PyUnicode_Format
                 U PyUnicode_FromFormat
                 U PyUnicode_FromString
                 U PyUnicode_FromStringAndSize
                 U PyUnicode_InternFromString
                 U PyUnicode_New
                 U PyUnicode_Type
                 U Py_FatalError
                 U Py_GetVersion
                 U Py_OptimizeFlag
000000000005f3c0 R _AS_MAX_DTS
000000000005f5c0 R _AS_MIN_DTS
000000000005f380 R _FS_MAX_DTS
000000000005f580 R _FS_MIN_DTS
                 w _ITM_deregisterTMCloneTable
                 w _ITM_registerTMCloneTable
000000000005f280 R _MS_MAX_DTS
000000000005f480 R _MS_MIN_DTS
000000000005f200 R _M_MAX_DTS
000000000005f400 R _M_MIN_DTS
000000000005f300 R _NS_MAX_DTS
000000000005f500 R _NS_MIN_DTS
000000000005f340 R _PS_MAX_DTS
000000000005f540 R _PS_MIN_DTS
                 U _PyDict_GetItem_KnownHash
                 U _PyDict_NewPresized
                 U _PyDict_SetItem_KnownHash
                 U _PyFloat_FormatAdvancedWriter
                 U _PyGen_Send
                 U _PyList_Extend
                 U _PyLong_FormatAdvancedWriter
                 U _PyObject_CallFunction_SizeT
                 U _PyObject_GC_New
                 U _PyObject_GenericGetAttrWithDict
                 U _PyObject_GetDictPtr
                 U _PyThreadState_UncheckedGet
                 U _PyTraceMalloc_NewReference
                 U _PyType_Lookup
                 U _PyUnicodeWriter_Dealloc
                 U _PyUnicodeWriter_Finish
                 U _PyUnicodeWriter_Init
                 U _PyUnicode_FastCopyCharacters
                 U _PyUnicode_Ready
                 U _Py_CheckRecursionLimit
                 U _Py_CheckRecursiveCall
                 U _Py_Dealloc
                 U _Py_FalseStruct
                 U _Py_NoneStruct
                 U _Py_TrueStruct
                 U _Py_tracemalloc_config
000000000005f240 R _S_MAX_DTS
000000000005f440 R _S_MIN_DTS
000000000005f2c0 R _US_MAX_DTS
000000000005f4c0 R _US_MIN_DTS
                 w __cxa_finalize@GLIBC_2.2.5
                 w __gmon_start__
0000000000083ae0 B __pyx_module_is_main_pandas___libs__tslibs__timestamps
                 U __stack_chk_fail@GLIBC_2.4
                 U __vsnprintf_chk@GLIBC_2.3.4
000000000005e128 T _fini
000000000000e000 T _init
0000000000017610 T add_minutes_to_datetimestruct
000000000005e120 T char_to_string
0000000000017c70 T cmp_npy_datetimestruct
0000000000017dd0 T convert_pydatetime_to_datetimestruct
000000000005f1a0 R days_per_month_table
0000000000018370 T extract_unit
0000000000017d40 T extract_utc_offset
                 U free@GLIBC_2.2.5
000000000001[9](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:9:10)0e0 T get_datetime_metadata_from_dtype
00000000000[17](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:9:18)ac0 T get_datetimestruct_days
0000000000017400 T is_leapyear
                 U malloc@GLIBC_2.2.5
                 U memcmp@GLIBC_2.2.5
                 U memcpy@GLIBC_2.2.5
                 U memset@GLIBC_2.2.5
00000000000[18](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:9:19)070 T npy_datetimestruct_to_datetime
0000000000018[39](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:9:40)0 T pandas_datetime_to_datetimestruct
000000000001[87](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:9:88)c0 T pandas_timedelta_to_timedeltastruct
                 U strlen@GLIBC_2.2.5

Bad build:

Symbols in np_datetime.o
Run objdump -t build/temp.linux-x86_64-cpython-38/pandas/_libs/tslibs/src/datetime/np_datetime.o
build/temp.linux-x[8](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:9)6_64-cpython-38/pandas/_libs/tslibs/src/datetime/np_datetime.o:     file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l    df *ABS*	0000000000000000 np_datetime.c
0000000000000000 l    d  .text.is_leapyear	0000000000000000 .text.is_leapyear
0000000000000000 l    d  .text.set_datetimestruct_days	0000000000000000 .text.set_datetimestruct_days
0000000000000000 l     F .text.set_datetimestruct_days	000000000000018f set_datetimestruct_days
0000000000000000 l    d  .text.add_minutes_to_datetimestruct	0000000000000000 .text.add_minutes_to_datetimestruct
0000000000000000 l    d  .text.get_datetimestruct_days	0000000000000000 .text.get_datetimestruct_days
0000000000000000 l    d  .text.add_seconds_to_datetimestruct	0000000000000000 .text.add_seconds_to_datetimestruct
0000000000000000 l    d  .text.cmp_npy_datetimestruct	0000000000000000 .text.cmp_npy_datetimestruct
0000000000000000 l    d  .text.extract_utc_offset	0000000000000000 .text.extract_utc_offset
0000000000000000 l    d  .text.convert_pydatetime_to_datetimestruct	0000000000000000 .text.convert_pydatetime_to_datetimestruct
0000000000000000 l    d  .text.npy_datetimestruct_to_datetime	0000000000000000 .text.npy_datetimestruct_to_datetime
0000000000000000 l    d  .rodata	0000000000000000 .rodata
0000000000000000 l    d  .text.extract_unit	0000000000000000 .text.extract_unit
0000000000000000 l    d  .text.pandas_datetime_to_datetimestruct	0000000000000000 .text.pandas_datetime_to_datetimestruct
0000000000000000 l    d  .text.pandas_timedelta_to_timedeltastruct	0000000000000000 .text.pandas_timedelta_to_timedeltastruct
0000000000000000 l    d  .text.get_datetime_metadata_from_dtype	0000000000000000 .text.get_datetime_metadata_from_dtype
0000000000000000 l       .rodata.cst16	0000000000000000 .LC0
0000000000000020 l       .rodata.cst16	0000000000000000 .LC2
0000000000000010 l       .rodata.cst16	0000000000000000 .LC1
0000000000000030 l       .rodata.cst16	0000000000000000 .LC3
0000000000000040 l       .rodata.cst16	0000000000000000 .LC4
00000000000000b0 l       .rodata.cst16	0000000000000000 .LC11
00000000000000c0 l       .rodata.cst16	0000000000000000 .LC12
00000000000000d0 l       .rodata.cst16	0000000000000000 .LC13
00000000000000e0 l       .rodata.cst16	0000000000000000 .LC14
0000000000000070 l       .rodata.cst16	0000000000000000 .LC7
0000000000000060 l       .rodata.cst16	0000000000000000 .LC6
00000000000000a0 l       .rodata.cst16	0000000000000000 .LC10
00000000000000f0 l       .rodata.cst16	0000000000000000 .LC15
0000000000000100 l       .rodata.cst16	0000000000000000 .LC16
0000000000000050 l       .rodata.cst16	0000000000000000 .LC5
0000000000000080 l       .rodata.cst16	0000000000000000 .LC8
00000000000000[9](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:10)0 l       .rodata.cst16	0000000000000000 .LC9
0000000000000000 l       .rodata.str1.1	0000000000000000 .LC17
0000000000000007 l       .rodata.str1.1	0000000000000000 .LC18
0000000000000009 l       .rodata.str1.1	0000000000000000 .LC19
0000000000000000 l       .rodata.cst8	0000000000000000 .LC20
0000000000000013 l       .rodata.str1.1	0000000000000000 .LC21
0000000000000018 l       .rodata.str1.1	0000000000000000 .LC22
000000000000001e l       .rodata.str1.1	0000000000000000 .LC23
0000000000000022 l       .rodata.str1.1	0000000000000000 .LC24
0000000000000027 l       .rodata.str1.1	0000000000000000 .LC25
000000000000002e l       .rodata.str1.1	0000000000000000 .LC26
0000000000000035 l       .rodata.str1.1	0000000000000000 .LC27
0000000000000041 l       .rodata.str1.1	0000000000000000 .LC28
0000000000000042 l       .rodata.str1.1	0000000000000000 .LC29
0000000000000000 l       .rodata.str1.8	0000000000000000 .LC30
0000000000000030 l       .rodata.str1.8	0000000000000000 .LC32
00000000000001[10](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:11) l       .rodata.cst16	0000000000000000 .LC31
0000000000000070 l       .rodata.str1.8	0000000000000000 .LC33
0000000000000000 g     F .text.is_leapyear	0000000000000071 is_leapyear
0000000000000000         *UND*	0000000000000000 _GLOBAL_OFFSET_TABLE_
00000000000000a0 g     O .rodata	0000000000000060 days_per_month_table
0000000000000000 g     F .text.add_minutes_to_datetimestruct	00000000000004a8 add_minutes_to_datetimestruct
0000000000000000 g     F .text.get_datetimestruct_days	00000000000001a9 get_datetimestruct_days
0000000000000000 g     F .text.add_seconds_to_datetimestruct	000000000000008f .hidden add_seconds_to_datetimestruct
0000000000000000 g     F .text.cmp_npy_datetimestruct	00000000000000ca cmp_npy_datetimestruct
0000000000000000 g     F .text.extract_utc_offset	0000000000000085 extract_utc_offset
0000000000000000         *UND*	0000000000000000 PyObject_GetAttrString
0000000000000000         *UND*	0000000000000000 _Py_NoneStruct
0000000000000000         *UND*	0000000000000000 PyObject_CallMethod
0000000000000000         *UND*	0000000000000000 _Py_Dealloc
0000000000000000 g     F .text.convert_pydatetime_to_datetimestruct	000000000000029c convert_pydatetime_to_datetimestruct
0000000000000000         *UND*	0000000000000000 PyLong_AsLong
0000000000000000         *UND*	0000000000000000 PyObject_HasAttrString
0000000000000000         *UND*	0000000000000000 PyNumber_Long
0000000000000000         *UND*	0000000000000000 PyErr_Occurred
0000000000000000 g     F .text.npy_datetimestruct_to_datetime	00000000000002f3 npy_datetimestruct_to_datetime
0000000000000000         *UND*	0000000000000000 PyExc_ValueError
0000000000000000         *UND*	0000000000000000 PyErr_SetString
0000000000000000 g     F .text.extract_unit	0000000000000017 extract_unit
0000000000000000 g     F .text.pandas_datetime_to_datetimestruct	000000000000042f pandas_datetime_to_datetimestruct
0000000000000000         *UND*	0000000000000000 PyExc_RuntimeError
0000000000000000 g     F .text.pandas_timedelta_to_timedeltastruct	0000000000000915 pandas_timedelta_to_timedeltastruct
0000000000000000 g     F .text.get_datetime_metadata_from_dtype	0000000000000009 get_datetime_metadata_from_dtype
0000000000000100 g     O .rodata	0000000000000028 _M_MAX_DTS
0000000000000[14](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:15)0 g     O .rodata	0000000000000028 _S_MAX_DTS
0000000000000[18](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:19)0 g     O .rodata	0000000000000028 _MS_MAX_DTS
00000000000001c0 g     O .rodata	0000000000000028 _US_MAX_DTS
0000000000000[20](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:21)0 g     O .rodata	0000000000000028 _NS_MAX_DTS
0000000000000[24](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:25)0 g     O .rodata	00000000000000[28](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:29) _PS_MAX_DTS
0000000000000280 g     O .rodata	0000000000000028 _FS_MAX_DTS
00000000000002c0 g     O .rodata	0000000000000028 _AS_MAX_DTS
0000000000000[30](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:31)0 g     O .rodata	0000000000000028 _M_MIN_DTS
0000000000000[34](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:35)0 g     O .rodata	0000000000000028 _S_MIN_DTS
0000000000000[38](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:39)0 g     O .rodata	0000000000000028 _MS_MIN_DTS
00000000000003c0 g     O .rodata	0000000000000028 _US_MIN_DTS
0000000000000[40](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:41)0 g     O .rodata	0000000000000028 _NS_MIN_DTS
0000000000000[44](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:45)0 g     O .rodata	0000000000000028 _PS_MIN_DTS
0000000000000[48](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:7:49)0 g     O .rodata	0000000000000028 _FS_MIN_DTS
00000000000004c0 g     O .rodata	0000000000000028 _AS_MIN_DTS
Symbols in np_datetime.so
Run nm -gD pandas/_libs/tslibs/np_datetime.cpython-38-x86_64-linux-gnu.so
                 U PyBaseObject_Type
                 U PyBytes_FromStringAndSize
                 U PyCFunction_NewEx
                 U PyCFunction_Type
                 U PyCapsule_GetPointer
                 U PyCapsule_Import
                 U PyCapsule_New
                 U PyCapsule_Type
                 U PyCode_New
                 U PyCode_NewEmpty
                 U PyDict_GetItemString
                 U PyDict_New
                 U PyDict_Next
                 U PyDict_SetItem
                 U PyDict_SetItemString
                 U PyDict_Size
                 U PyErr_Clear
                 U PyErr_ExceptionMatches
                 U PyErr_Format
                 U PyErr_GivenExceptionMatches
                 U PyErr_NormalizeException
                 U PyErr_Occurred
                 U PyErr_SetObject
                 U PyErr_SetString
                 U PyErr_WarnEx
                 U PyErr_WarnFormat
                 U PyEval_EvalCodeEx
                 U PyEval_EvalFrameEx
                 U PyExc_AttributeError
                 U PyExc_DeprecationWarning
                 U PyExc_Exception
                 U PyExc_ImportError
                 U PyExc_NameError
                 U PyExc_OverflowError
                 U PyExc_RuntimeError
                 U PyExc_SystemError
                 U PyExc_TypeError
                 U PyExc_ValueError
                 U PyException_SetCause
                 U PyException_SetTraceback
                 U PyFloat_Type
                 U PyFrame_New
                 U PyFrame_Type
                 U PyFunction_Type
                 U PyImport_AddModule
                 U PyImport_GetModuleDict
                 U PyImport_ImportModule
                 U PyImport_ImportModuleLevelObject
0000000000006d3f T PyInit_np_datetime
                 U PyInterpreterState_GetID
                 U PyList_New
                 U PyLong_AsLong
                 U PyLong_AsSsize_t
                 U PyLong_FromLong
                 U PyLong_Type
                 U PyMem_Malloc
                 U PyMem_Realloc
                 U PyMethod_Type
                 U PyModuleDef_Init
                 U PyModule_AddObject
                 U PyModule_GetDict
                 U PyModule_NewObject
                 U PyNumber_Index
                 U PyNumber_Long
                 U PyOS_snprintf
                 U PyObject_Call
                 U PyObject_CallMethod
                 U PyObject_CallObject
                 U PyObject_Format
                 U PyObject_GetAttr
                 U PyObject_GetAttrString
                 U PyObject_HasAttrString
                 U PyObject_Hash
                 U PyObject_IsTrue
                 U PyObject_Not
                 U PyObject_RichCompare
                 U PyObject_SetAttr
                 U PyObject_SetAttrString
                 U PyObject_SetItem
                 U PyThreadState_Get
                 U PyTraceBack_Here
                 U PyTuple_New
                 U PyTuple_Pack
                 U PyType_IsSubtype
                 U PyType_Type
                 U PyUnicode_AsUTF[8](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:8:9)
                 U PyUnicode_AsUTF8AndSize
                 U PyUnicode_Compare
                 U PyUnicode_Concat
                 U PyUnicode_Decode
                 U PyUnicode_FromFormat
                 U PyUnicode_FromString
                 U PyUnicode_FromStringAndSize
                 U PyUnicode_InternFromString
                 U PyUnicode_New
                 U PyUnicode_Type
                 U Py_GetVersion
0000000000013a20 R _AS_MAX_DTS
0000000000013c20 R _AS_MIN_DTS
0000000000013[9](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:8:10)e0 R _FS_MAX_DTS
0000000000013be0 R _FS_MIN_DTS
                 w _ITM_deregisterTMCloneTable
                 w _ITM_registerTMCloneTable
00000000000138e0 R _MS_MAX_DTS
0000000000013ae0 R _MS_MIN_DTS
0000000000013860 R _M_MAX_DTS
0000000000013a60 R _M_MIN_DTS
0000000000013960 R _NS_MAX_DTS
0000000000013b60 R _NS_MIN_DTS
00000000000139a0 R _PS_MAX_DTS
0000000000013ba0 R _PS_MIN_DTS
                 U _PyDict_GetItem_KnownHash
                 U _PyDict_NewPresized
                 U _PyFloat_FormatAdvancedWriter
                 U _PyLong_FormatAdvancedWriter
                 U _PyObject_GetDictPtr
                 U _PyThreadState_UncheckedGet
                 U _PyUnicodeWriter_Dealloc
                 U _PyUnicodeWriter_Finish
                 U _PyUnicodeWriter_Init
                 U _PyUnicode_FastCopyCharacters
                 U _PyUnicode_Ready
                 U _Py_CheckRecursionLimit
                 U _Py_CheckRecursiveCall
                 U _Py_Dealloc
                 U _Py_FalseStruct
                 U _Py_NoneStruct
                 U _Py_TrueStruct
00000000000138a0 R _S_MAX_DTS
0000000000013aa0 R _S_MIN_DTS
0000000000013920 R _US_MAX_DTS
0000000000013b20 R _US_MIN_DTS
                 U __ctype_b_loc@GLIBC_2.3
                 w __cxa_finalize@GLIBC_2.2.5
                 w __gmon_start__
0000000000017d30 B __pyx_module_is_main_pandas___libs__tslibs__np_datetime
                 U __snprintf_chk@GLIBC_2.3.4
                 U __stack_chk_fail@GLIBC_2.4
00000000000119dc T _fini
0000000000005000 T _init
000000000000ea00 T add_minutes_to_datetimestruct
000000000000e7e0 T char_to_string
000000000000f060 T cmp_npy_datetimestruct
000000000000f1c0 T convert_pydatetime_to_datetimestruct
0000000000013800 R days_per_month_table
000000000000f760 T extract_unit
000000000000f130 T extract_utc_offset
00000000000[10](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:8:11)f30 T get_datetime_iso_8601_strlen
00000000000104d0 T get_datetime_metadata_from_dtype
000000000000eeb0 T get_datetimestruct_days
000000000000e7f0 T is_leapyear
00000000000[11](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:8:12)030 T make_iso_8601_datetime
000000000001[18](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:8:19)c0 T make_iso_8601_timedelta
                 U memcmp@GLIBC_2.2.5
                 U memcpy@GLIBC_2.2.5
000000000000f[46](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:8:47)0 T npy_datetimestruct_to_datetime
000000000000f780 T pandas_datetime_to_datetimestruct
000000000000fbb0 T pandas_timedelta_to_timedeltastruct
00000000000104e0 T parse_iso_8[60](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:8:61)1_datetime
Symbols in timestamps.so
Run nm -gD pandas/_libs/tslibs/timestamps.cpython-3[8](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:9:9)-x86_64-linux-gnu.so
                 U PyArg_UnpackTuple
                 U PyBaseObject_Type
                 U PyBool_Type
                 U PyBuffer_Release
                 U PyBytes_FromString
                 U PyBytes_FromStringAndSize
                 U PyBytes_Type
                 U PyCFunction_NewEx
                 U PyCFunction_Type
                 U PyCapsule_GetName
                 U PyCapsule_GetPointer
                 U PyCapsule_Import
                 U PyCapsule_IsValid
                 U PyCapsule_New
                 U PyCapsule_Type
                 U PyClassMethod_New
                 U PyCode_New
                 U PyCode_NewEmpty
                 U PyCoro_Type
                 U PyDescr_NewClassMethod
                 U PyDict_Copy
                 U PyDict_DelItem
                 U PyDict_GetItemString
                 U PyDict_GetItemWithError
                 U PyDict_New
                 U PyDict_Next
                 U PyDict_SetItem
                 U PyDict_SetItemString
                 U PyDict_Size
                 U PyDict_Type
                 U PyErr_Clear
                 U PyErr_ExceptionMatches
                 U PyErr_Fetch
                 U PyErr_Format
                 U PyErr_GivenExceptionMatches
                 U PyErr_NoMemory
                 U PyErr_NormalizeException
                 U PyErr_Occurred
                 U PyErr_PrintEx
                 U PyErr_Restore
                 U PyErr_SetNone
                 U PyErr_SetObject
                 U PyErr_SetString
                 U PyErr_WarnEx
                 U PyErr_WarnFormat
                 U PyErr_WriteUnraisable
                 U PyEval_EvalCodeEx
                 U PyEval_EvalFrameEx
                 U PyExc_AssertionError
                 U PyExc_AttributeError
                 U PyExc_BufferError
                 U PyExc_DeprecationWarning
                 U PyExc_Exception
                 U PyExc_GeneratorExit
                 U PyExc_ImportError
                 U PyExc_IndexError
                 U PyExc_NameError
                 U PyExc_NotImplementedError
                 U PyExc_OverflowError
                 U PyExc_RuntimeError
                 U PyExc_RuntimeWarning
                 U PyExc_StopIteration
                 U PyExc_SystemError
                 U PyExc_TypeError
                 U PyExc_UnboundLocalError
                 U PyExc_ValueError
                 U PyExc_ZeroDivisionError
                 U PyException_SetCause
                 U PyException_SetTraceback
                 U PyFloat_FromDouble
                 U PyFloat_Type
                 U PyFrame_New
                 U PyFrame_Type
                 U PyFunction_Type
                 U PyGILState_Ensure
                 U PyGILState_Release
                 U PyGen_Type
                 U PyImport_AddModule
                 U PyImport_GetModuleDict
                 U PyImport_ImportModule
                 U PyImport_ImportModuleLevelObject
00000000000[16](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:9:17)34a T PyInit_timestamps
                 U PyInterpreterState_GetID
                 U PyList_Append
                 U PyList_AsTuple
                 U PyList_New
                 U PyList_Type
                 U PyLong_AsDouble
                 U PyLong_AsLong
                 U PyLong_AsSsize_t
                 U PyLong_FromLong
                 U PyLong_FromSsize_t
                 U PyLong_Type
                 U PyMem_Free
                 U PyMem_Malloc
                 U PyMem_Realloc
                 U PyMethodDescr_Type
                 U PyMethod_New
                 U PyMethod_Type
                 U PyModuleDef_Init
                 U PyModule_AddObject
                 U PyModule_GetDict
                 U PyModule_GetName
                 U PyModule_NewObject
                 U PyNumber_Add
                 U PyNumber_FloorDivide
                 U PyNumber_InPlaceAdd
                 U PyNumber_InPlaceMultiply
                 U PyNumber_InPlaceSubtract
                 U PyNumber_Index
                 U PyNumber_Long
                 U PyNumber_Multiply
                 U PyNumber_Negative
                 U PyNumber_Remainder
                 U PyNumber_Subtract
                 U PyNumber_TrueDivide
                 U PyOS_snprintf
                 U PyObject_Call
                 U PyObject_CallFinalizerFromDealloc
                 U PyObject_CallFunctionObjArgs
                 U PyObject_CallObject
                 U PyObject_ClearWeakRefs
                 U PyObject_Format
                 U PyObject_Free
                 U PyObject_GC_Del
                 U PyObject_GC_Track
                 U PyObject_GC_UnTrack
                 U PyObject_GenericGetAttr
                 U PyObject_GetAttr
                 U PyObject_GetAttrString
                 U PyObject_GetBuffer
                 U PyObject_GetItem
                 U PyObject_GetIter
                 U PyObject_Hash
                 U PyObject_IsSubclass
                 U PyObject_IsTrue
                 U PyObject_Malloc
                 U PyObject_Not
                 U PyObject_RichCompare
                 U PyObject_RichCompareBool
                 U PyObject_SelfIter
                 U PyObject_SetAttr
                 U PyObject_SetAttrString
                 U PyObject_SetItem
                 U PyObject_Size
                 U PyRun_StringFlags
                 U PySequence_Contains
                 U PySequence_Tuple
                 U PySlice_New
                 U PySlice_Type
                 U PyThreadState_Get
                 U PyThread_allocate_lock
                 U PyThread_free_lock
                 U PyTraceBack_Here
                 U PyTraceBack_Type
                 U PyTuple_GetItem
                 U PyTuple_GetSlice
                 U PyTuple_New
                 U PyTuple_Pack
                 U PyTuple_Type
                 U PyType_GetFlags
                 U PyType_IsSubtype
                 U PyType_Modified
                 U PyType_Ready
                 U PyType_Type
                 U PyUnicode_AsUTF8
                 U PyUnicode_Compare
                 U PyUnicode_Concat
                 U PyUnicode_Decode
                 U PyUnicode_DecodeASCII
                 U PyUnicode_Format
                 U PyUnicode_FromFormat
                 U PyUnicode_FromString
                 U PyUnicode_FromStringAndSize
                 U PyUnicode_InternFromString
                 U PyUnicode_New
                 U PyUnicode_Type
                 U Py_FatalError
                 U Py_GetVersion
                 U Py_OptimizeFlag
                 w _ITM_deregisterTMCloneTable
                 w _ITM_registerTMCloneTable
                 U _PyDict_GetItem_KnownHash
                 U _PyDict_NewPresized
                 U _PyDict_SetItem_KnownHash
                 U _PyFloat_FormatAdvancedWriter
                 U _PyGen_Send
                 U _PyList_Extend
                 U _PyLong_FormatAdvancedWriter
                 U _PyObject_CallFunction_SizeT
                 U _PyObject_GC_New
                 U _PyObject_GenericGetAttrWithDict
                 U _PyObject_GetDictPtr
                 U _PyThreadState_UncheckedGet
                 U _PyTraceMalloc_NewReference
                 U _PyType_Lookup
                 U _PyUnicodeWriter_Dealloc
                 U _PyUnicodeWriter_Finish
                 U _PyUnicodeWriter_Init
                 U _PyUnicode_FastCopyCharacters
                 U _PyUnicode_Ready
                 U _Py_CheckRecursionLimit
                 U _Py_CheckRecursiveCall
                 U _Py_Dealloc
                 U _Py_FalseStruct
                 U _Py_NoneStruct
                 U _Py_TrueStruct
                 U _Py_tracemalloc_config
                 w __cxa_finalize@GLIBC_2.2.5
                 w __gmon_start__
0000000000080ae0 B __pyx_module_is_main_pandas___libs__tslibs__timestamps
                 U __stack_chk_fail@GLIBC_2.4
                 U __vsnprintf_chk@GLIBC_2.3.4
000000000005b438 T _fini
000000000000d000 T _init
000000000005b4[30](https://github.com/pandas-dev/pandas/runs/6844281294?check_suite_focus=true#step:9:31) T char_to_string
                 U free@GLIBC_2.2.5
                 U malloc@GLIBC_2.2.5
                 U memcmp@GLIBC_2.2.5
                 U memcpy@GLIBC_2.2.5
                 U memset@GLIBC_2.2.5
                 U pandas_datetime_to_datetimestruct
                 U strlen@GLIBC_2.2.5

@WillAyd
Copy link
Member

WillAyd commented Aug 30, 2022

@rhshadrach great debugging on this. I think the main thing of importance here is the symbol table for timestamps.so Your good build has

0000000000018[39](https://github.com/pandas-dev/pandas/runs/6844281121?check_suite_focus=true#step:9:40)0 T pandas_datetime_to_datetimestruct

Whereas the bad build has

                 U pandas_datetime_to_datetimestruct

The "T" vs "U" distinction here is important; man nm offers some good insights but looks like the former build has the symbol in the text table of the shared library whereas the latter has it as undefined.

"U" occurs when you try to link object files (.o on Unix) but the symbol you want placed into the shared library (.so) is not found in any of the .o files.

My guess here is that we have a race condition between the linking stage looking for np_datetime.o and the compilation phase of another process which may be generating this file. Unlike tools like CMake and Meson, it doesn't appear like setuptools isolates the generation of the np_datetime.o file to each library it is building, instead continually writing to build/temp.linux-x86_64-cpython-38/pandas/_libs/tslibs/np_datetime.o

With all of that said, I don't know what the immediate fix could be for setuptools. Life is definitely much easier in the CMake / Meson world with this. We could certainly re-examine the build toolchain in setup.py as is and make sure that files that re-generate np_datetime.o truly need to to mitigate the risk of a race condition, but AFAIK I don't think this is truly resolvable with setuptools

@mroeschke @lithomas1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants