segfault on 32bit cygwin snapshot

Ken Brown kbrown@cornell.edu
Sat Mar 6 17:16:13 GMT 2021


On 3/5/2021 8:45 PM, Takashi Yano via Cygwin wrote:
> On Fri, 5 Mar 2021 17:30:30 +0100
> Marco Atzeri wrote:
>> On 05.03.2021 15:42, Corinna Vinschen via Cygwin wrote:
>>> On Mar  5 01:11, Mark Geisert wrote:
>>>> Marco Atzeri via Cygwin wrote:
>>>>> On 04.03.2021 21:17, Marco Atzeri wrote:
>>>>>> On 04.03.2021 16:17, Ken Brown via Cygwin wrote:
>>>>>>> On 3/4/2021 6:50 AM, Takashi Yano via Cygwin wrote:
>>>>>>>> On Thu, 4 Mar 2021 12:11:11 +0100
>>>>>>>> marco atzeri wrote:
>>>>>>>>> I have no problem to patch Python to solve the issue,
>>>>>>>>> but I have not seen evidence of the dlsym mechanism .
>>>>>>>>> But of course I an NOT and expert in this field.
>>>>>>>>>
>>>>>>>>> If someone looking to the code can give me some hints,
>>>>>>>>> I will appreciate
>>>>>>>>
>>>>>>>> I am also not sure where the dlsym() is used in python.
>>>>>>>> At least, os.uname() works in python 3.8.7 and 2.7.18 in my
>>>>>>>> environment even without that snippet. It seems that os.uname()
>>>>>>>> does not use dlsym(). Do I overlook something?
>>>>>>>
>>>>>>> This all started because Mark reported a problem building python 3.8.3:
>>>>>>>
>>>>>>>      https://cygwin.com/pipermail/cygwin-apps/2020-December/040765.html
>>>>>>> https://cygwin.com/pipermail/cygwin-developers/2020-December/012019.html
>>>>>>>
>>>>>>> It's strange that Marco never bumped into the problem.
>>>>>>>
>>>>>>> Ken
>>>>>>
>>>>>> I never built python using cygwin snapshots as Mark was trying to do,
>>>>>> all my builds were using 3.1.7.
>>>>>>
>>>>>> Let me set a separate enviroment for building on latest snapshot
>>>>>
>>>>> I can not replicate with latest snapshot
>>>>>
>>>>> $ uname -svr
>>>>> CYGWIN_NT-10.0-WOW 3.2.0s(0.340/5/3) 2021-03-01 15:42
>>>>>
>>>>> nor in 64bit when building 3.8.8
>>>>>
>>>>> For what I see the DLL is always using a proper import
>>>>> from cygwin1.dll
>>>>>
>>>>> $ objdump -x libpython3.8.dll |grep uname
>>>>>            2b9de0   2170  uname
>>>>>            2b9de8   2171  uname_x
>>>>>
>>>>> the only thing not standard on my build system is a case sensitive
>>>>> filesystem and mount
>>>>
>>>> I had concerns that I had somehow corrupted my build environment, and it was
>>>> Marco's successes that convinced me to reinstall 3.1.7 to recover a
>>>> known-good environment.  Then seeing Marco go ahead and release the
>>>> different Python releases (yay!) I didn't investigate any further.
>>>>
>>>> I'm now trying to locate the os.uname usage of dlopen/dlsym again just for
>>>> the record but am having some difficulty.  I'll reply again when I've got
>>>> it.
>>>
>>> Guys,
>>>
>>> if it turns out that we fixed a problem that doesn't actually is a
>>> real-world problem, I'm wondering if we shouldn't just revert the Cygwin
>>> patch we're talking about here (commit 532b91d24e9496) and be done with
>>> it.
>>>
>>> Special casing dynamic loading of uname just to support some experimental
>>> bordercase doesn't make much sense.  In that case I'm all for "don't do
>>> that"!
>>>
>>>
>>> Corinna
>>
>>
>> Python has a lot of problem but not this one for what I can see
>>
>> $ python3.8 /usr/lib/python3.8/test/pythoninfo.py  | grep uname
>> os.uname: posix.uname_result(sysname='CYGWIN_NT-10.0-19041-WOW64',
>> nodename='LAPTOP-82F08ILC', release='3.1.7-340.i686',
>> version='2020-08-22 19:03 UTC', machine='i686')
>>
>> and similar for the other version
> 
> I also tried to build python 3.8.7, 3.8.3 and 3.7.9 under cygwin 32bit
> and 64bit current git head with the commit 532b91d2 reverted. All trials
> resulted in success. Moreover, os.uname() works expectedly.
> 
> That is, the problem reported by Mark could not be reproduced.
> https://cygwin.com/pipermail/cygwin-apps/2020-December/040765.html
> 
> Updating something other than cygwin1.dll might fix the issue???

I wonder if Mark had a corrupt libcygwin.a installed at the time he encountered 
this problem.  That would explain his observations, except for the claim that 
python was calling uname via dlopen/dlsym.  I guess he's rechecking that claim. 
  Mark, FWIW, I looked at the git history of python's Modules/posixmodule.c, and 
I can't see where they ever did this.

Ken


More information about the Cygwin mailing list