______________________________________________________________________ SHORT VERSION:
I am not new to Jabberd. I am looking for help to track down the source of a problem I am experiencing. I believe the issue lies either in Jabberd, the GNU pth, or Cygwin itself, but I need outside confirmation.
After getting Jabberd to compile under Cygwin (see LONG VERSION for more details), attempts to fire it up using the command from the Jabberd home directory with the debug flag:
./jabberd/jabberd.exe -D -c /usr/local/jabber/jabber.xml
result in the following error message, which I've never gotten before:
____________________________________________________________
Mon Jun 16 20:41:45 2003 mio.c:578 MIO is starting up
Mon Jun 16 20:41:45 2003 mio.c:607 mio while loop top
**Pth** STACK OVERFLOW: thread pid_t=0xa0405c0, name="unknown"
Segmentation fault
____________________________________________________________If anyone has been able to compile from source and RUN Jabberd 1.4.2 using the latest Cygwin files (I have v1.3.22-1 of the DLL installed, and all the latest files) and either the included GNU pth 1.4.0 files (or the latest 2.0.0 files for that matter), I would really like to hear from you.
And if anyone is familiar with the error above, any advice would be appreciated. Turns out the **Pth** line is generated by a function in within pth, located in the pth_sched.c file. My question is whether the goof is due to pth, jabberd, or some change in Cygwin since I last did this successfully about 4-5 months ago.
______________________________________________________________________ LONG VERSION:
Starting around the beginning of the year, I began playing with Jabberd v.1.4.2 for internal use at our office. Our departmental server is a Windows box, hence the need to make Jabberd work under Cygwin. After dealing with the usual compilation headaches, I was able to get the following working (tested using Rhymbox 1.5 from various clients):
* basic Jabberd functionality (registration, rosters, etc.)
* JUD v0.4 (for User Directory support)
* MU-conference v0.3 (for groupchat)
* SSL supportDetails on this later, but suffice it to say that the basic procedure I could follow for a clean Cygwin Jabberd install (where pth was not yet installed) went something like this:
1. Decompress Jabberd files to /usr/local/jabber
2. cd /usr/local/jabber/jabberd/pth-1.4.0
3. make; make test; make install
4. cd /usr/local/jabber
5. ./configure
As you likely know, this step obliterates various Makefile's all
over the source tree, completely overwrites /usr/local/jabber/dnsrv,
and in general is not the most elegant solution, though I applaud
whoever did it, because it DOES (or at least DID) work, and that's
key.
6. cd /usr/local/jabber/jabberd
7. Edit Makefile so that the 'ld' link lines have $(LDFLAGS) tacked
onto the ends of them. [Not sure why this was omitted in the
distro.]
8. cd /usr/local/jabber
9. make
10. cp /usr/local/jabber/dnsrv/jabadns.exe /usr/local/bin/
[This last step illudes many people. Took me awhile to figure this
one out, but yes, it helps to have jabadns.exe in your PATH.]Though I know all the pain others have gone through, making 'ln -s' links in /usr/lib, etc., for the various pth files, this was not really necessary. GNU pth installs itself into /usr/local/.., and as long as the linker knows where to look, that was all that really was needed. And copying javadns.exe to /usr/local/bin just made it more accessible to jabberd.exe when you fired it up.
Anyway, this all worked fine and dandy in the past for BASIC compilation of Jabberd (and still does). That is, no JUD, no MU-conference, no SSL. Just vanilla Jabberd.
However, NOW I get the error message listed above in the SHORT VERSION. Apparently just firing up Jabberd is causing a stack overflow. After Googling around a bit, it seems that one of the many limitations under Cygwin/Windows is that sigstack is not really supported, so there's a hack. More importantly, the pth stack appears to be static, not able to grow if necessary with dynamic calls for more memory.
Anyway, my point is this: This used to work just fine. Now the Jabberd server compiles just fine, but it dies when you fire it up. No changes in the install process. The only changes since I did this 4-5 months ago are that Cygwin is at a much newer version now, gcc has changed, the various libraries have been updated, various Windows updates have been applied, blah blah blah. So I have no clue where the problem lies. And I would really like to track this down.
Please note that I have been working on adjusting the various config files in the standard Jabberd v1.4.2 distribution so as that, if dropped in place, users could compile Jabberd under Cygwin just as they do under most *nixes. At this point I can cleanly build Jabberd, JUD v0.4, MU-conference v0.5.2, xdb_sql v1.3, and though I haven't got OpenLDAP installed, I believe my modified Makefile for xdb_ldap will build that as well.
Not only that, but I can build all of these with or without the --enable-ssl flag, and yes, in the past when Jabberd was running, I had full SSL support working. And all this without changing a single line of source code. All I have been doing is making changes to ./configure and various 'Makefile' in the distribution.
My end goal--beyond just getting Jabberd to work of course :-) --is that I would like to submit my changes to the Jabberd maintainers, possibly for inclusion in the distribution or maybe just an external piece for those so inclined, and ultimately I would like to build either a Cygwin package and/or a Windows installer with all this packaged together so as to make the world of JABBER just a little more accessible. At the very least, I will make these modified files available to anyone/everyone who would like them, just as soon as I can be sure they are working properly...which is hard to do when the .EXE dies on startup. :-/
Please note I have tried many things, including but not limited to the following:
* Prior to any compilation, I have reset Cygwin so that pth is not
installed, etc.
* I have tried my new Makefile/config files to build jabberd/etc. and
they build fine. Commands like
./jabberd/jabberd.exe -v
kick back version information as they should, but any attempt to fire
up jabberd results in the error message above.
* I have tried compiling jabberd after installing pth-1.4.0 cleanly,
and I have also tried doing so after installing pth-2.0.0 cleanly
(note I always do a 'make uninstall' to remove pth before starting
over again doing a clean install)
* I have tried the above using both the original Jabberd 1.4.2
distribution files (making the one change to ./jabberd/jabberd.h
mentioned earlier) and using my modified Makefile setup. In all
cases the DLLs and .EXEs built fine. And getting jabberd.exe to
run to give me version information works fine. But the moment I try
to bring the server online, that's it.I would really like to resolve this issue, both because I would like to use this compilation myself (with Jabberd hooking into PostgreSQL via xdb_sql), and so I can verify my config file changes and get them out for others to use if they help at all.
So any help you can offer to track down this error would be greatly appreciated. Thanks in advance for any and all help.
_______________________________________________ jdev mailing list [EMAIL PROTECTED] http://mailman.jabber.org/listinfo/jdev
