This is the mail archive of the cygwin mailing list for the Cygwin project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi folks, When compiling 64 bit Cygwin on Wine, I found a python{2,3} failure when building documentation [1]: xmlto --skip-validation --with-dblatex pdf -o cygwin-ug-net/ -m /drone/src/github.com/cygwin/cygwin/winsup/doc/fo.xsl /drone/src/github.com/cygwin/cygwin/winsup/doc/cygwin-ug-net.xml sem_init: Invalid argument Traceback (most recent call last): File "/usr/bin/dblatex", line 10, in <module> from dbtexmf.dblatex import dblatex File "/usr/lib/python2.7/site-packages/dbtexmf/dblatex/dblatex.py", line 8, in <module> from dbtexmf.core.dbtex import DbTex, DbTexCommand File "/usr/lib/python2.7/site-packages/dbtexmf/core/dbtex.py", line 11, in <module> import urllib File "/usr/lib/python2.7/urllib.py", line 26, in <module> import socket File "/usr/lib/python2.7/socket.py", line 67, in <module> from _ssl import SSLError as sslerror ImportError: cannot import name SSLError make[3]: [Makefile:104: cygwin-ug-net/cygwin-ug-net.pdf] Error 1 (ignored) According to my previous experience this happens with previous version of Cygwin 64 bit on Wine, but works fine on Windows, and works fine on 32 bit Cygwin on Wine. I can't test latest git HEAD Cygwin version due to another known failure. I tried to track down the problem, and I found during the call of sem_init(sem, pshared=0, value=1), in some case pshared and value were unexpectedly changed to large integers after verifyable_object_isvalid(). I tried to reproduce with a simplified test case, and got the below code which behaviors wrong but not exactly in the same way: #include <unistd.h> #include <stdlib.h> #include <string.h> #include <semaphore.h> #include <pthread.h> int main(int argc, char *argv[]) { sem_t *p_sem = malloc(sizeof(sem_t)); memset(p_sem, 0xcc, sizeof(sem_t)); /* trigger exception handling code in Cygwin sem_init()-->verifyable_object_isvalid() */ sem_init(p_sem, 0, 1); return 0; } Compiled using Cygwin gcc -pthread, The above code works fine on Cygwin on Windows and 32 bit Cygwin on Wine, but causes a stack overflow on 64 bit Cygwin on Wine. Unfortunately it does not fail exatly in the same way to Cygiwn python, but at least it brings some interesting question. I think it is a Wine bug which does not handle exception correctly, and I'm trying to track down deeper. At the time could anyone provide some hint which piece of Cygwin code could I learn to write a pure Win32 test case emulating the above example? I also attached +seh log comparing 64 bit Cygwin and 32 bit Cygwin on Wine, which show the stackoverflow on 64 bit but handles fine on 32 bit, hopefully that helps. I created a Wine bug on [2]. Thank you! [1] https://tea-ci.org/cygwin/cygwin/4 [2] https://bugs.wine-staging.com/show_bug.cgi?id=691 -- Regards, Qian Hong - http://www.winehq.org
Attachment:
sem_init.wine.seh.64.txt
Description: Text document
Attachment:
sem_init.wine.seh.32.txt
Description: Text document
-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |