From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ken Brown Newsgroups: gmane.emacs.devel Subject: Re: Fix for Cygwin/GSlice problem Date: Wed, 09 Dec 2009 11:30:16 -0500 Message-ID: <4B1FD098.4040400@cornell.edu> References: <4B1EA7F6.3090504@cornell.edu> <4B1F1424.9020105@cornell.edu> <4B1F5A63.3030509@swipnet.se> <4B1FBB8C.5090909@cornell.edu> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1260376240 14825 80.91.229.12 (9 Dec 2009 16:30:40 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 9 Dec 2009 16:30:40 +0000 (UTC) Cc: "Jan D." , emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Dec 09 17:30:33 2009 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1NIPQr-0006t8-W5 for ged-emacs-devel@m.gmane.org; Wed, 09 Dec 2009 17:30:30 +0100 Original-Received: from localhost ([127.0.0.1]:57356 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NIPQr-0007BB-Gq for ged-emacs-devel@m.gmane.org; Wed, 09 Dec 2009 11:30:29 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NIPQl-00078W-5o for emacs-devel@gnu.org; Wed, 09 Dec 2009 11:30:23 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NIPQg-0006ya-4p for emacs-devel@gnu.org; Wed, 09 Dec 2009 11:30:22 -0500 Original-Received: from [199.232.76.173] (port=60543 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NIPQg-0006yP-1M for emacs-devel@gnu.org; Wed, 09 Dec 2009 11:30:18 -0500 Original-Received: from granite1.mail.cornell.edu ([128.253.83.141]:51268 helo=authusersmtp.mail.cornell.edu) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NIPQf-0005hf-7T for emacs-devel@gnu.org; Wed, 09 Dec 2009 11:30:17 -0500 Original-Received: from [128.84.234.191] (markov.math.cornell.edu [128.84.234.191]) (authenticated bits=0) by authusersmtp.mail.cornell.edu (8.13.1/8.12.10) with ESMTP id nB9GUF9c019859 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 9 Dec 2009 11:30:15 -0500 (EST) User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) In-Reply-To: <4B1FBB8C.5090909@cornell.edu> X-detected-operating-system: by monty-python.gnu.org: Solaris 9 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:118458 Archived-At: On 12/9/2009 10:00 AM, Ken Brown wrote: > On 12/9/2009 9:31 AM, Stefan Monnier wrote: >>>>>> +/* Emacs supplies its own malloc, but glib (part of Gtk+) calls >>>>>> + memalign and on Cygwin, that becomes the Cygwin supplied memalign. >>>>>> + As malloc is not the Cygwin malloc, the Cygwin memalign always >>>>>> + returns ENOSYS. A workaround is to set G_SLICE=always-malloc. */ >>>>>> +#define G_SLICE_ALWAYS_MALLOC >>>>> Why does Cygwin-Emacs use its own malloc rather than the system >>>>> malloc? >>> Emacs prefers its own malloc when the system malloc doesn't have the >>> required hooks. If this is critical or not I don't know. >> >> I'd suggest we try to use Cygwin's system malloc, with a clear comment >> about why we don't use our own, and what kind of workaround could be >> used (the G_SLICE_ALWAYS_MALLOC) if we wanted to use our own. > > OK, I'll give it a try and report back. I assume the way to do this is > to remove '#define G_SLICE_ALWAYS_MALLOC' from src/s/cygwin.h and > instead #define SYSTEM_MALLOC. [You don't need to respond unless this > is wrong.] I tried this, and the build fails with gcc -o temacs ecrt0.o dispnew.o frame.o scroll.o xdisp.o menu.o window.o charset.o coding.o category.o ccl.o character.o chartab.o cm.o term.o terminal.o xfaces.o emacs.o keyboard.o macros.o keymap.o sysdep.o buffer.o filelock.o insdel.o marker.o minibuf.o fileio.o dired.o filemode.o cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o alloc.o data.o doc.o editfns.o callint.o eval.o floatfns.o fns.o font.o print.o lread.o syntax.o unexcw.o bytecode.o process.o callproc.o region-cache.o sound.o atimer.o doprnt.o strftime.o intervals.o textprop.o composite.o md5.o sheap.o terminfo.o lastfile.o vm-limit.o getloadavg.o -lcurses -lg `gcc -print-libgcc-file-name` -lm -lc `gcc -print-libgcc-file-name` vm-limit.o:vm-limit.c:(.text+0x17): undefined reference to `___after_morecore_hook' vm-limit.o:vm-limit.c:(.text+0x6c): undefined reference to `___morecore' I looked at the source code, and I can't see any place where Cygwin's malloc.h is getting included. I don't know if that's the (only) problem. I also asked for help on the Cygwin list and got the following two responses: > ...cygwin doesn't provide something > that linux does. It's possible that you may be able to work around > the problem by using a -D__morecore=sbrk (or maybe one more underscore > is needed) on the compile line for vm-limit.c. > why are you bothering to specify the system libs at all? You're using > the gcc driver to link, it'll do all that for you automatically (and > correctly) if you just leave them out; you shouldn't need anything but > -lcurses out of that lot. You'll definitely break linking against the shared > libgcc by putting the static archive in the list of user libraries like that. I'm really in over my head at this point. If someone sees something I can do to fix this, I'll give it a try. Otherwise, maybe we should just stick with the G_SLICE workaround for now. Ken