http://bugs.winehq.org/show_bug.cgi?id=16666
--- Comment #13 from IronForge robertgray86@gmail.com 2009-09-10 19:28:19 --- Greetings:
I am not a system programmer; but have coded at tad for school and work - dealing mostly with packaged commercial apps.
Looking into the Dynamic Load Failure / Segfault / malloc issue, I wanted to post a few reference material for those interested in tackling this problem.
Correct me if I've read previous posts and the ref matl incorrectly; but from what's "obvious to the most casual observer" (my Math Prof used to say that), is that the Malloc Error we get when attempting to run Wine in recent versions of OBSD is due to the fact that OBSD changed the way its malloc system function handles memory pointer allocations back in OBSDv3.8.
Reasons given involve a few issues regarding security, efficiency, and the enforcement of proper coding practices.
IMHO, this bug can most likely be fixed if an OBSD Port of, or a complete revision of WINE Source Code become compliant with Dynamic, Randomized, and Thoroughly 'Freed' (work with me, here) Memory Management by System Calls employed by OBSD.
Openports.se, a repository of OBSD pkgs, has a maintainer designated for Wine; and OBSD Collective itself has mailing lists. I've sent a msg out to the Maintainer and the advocacy mailing list for assistance and review of WINE's memory allocation and usage practice (not in this detail; but you'll get the drift). I've also argued that it's beneficial to have a current, working version of WINE available for people curious and interested in trying OBSD.
My first impression on the 10-yro port was not positive; and IMHO, probably would disinterest others who may wish to try the OS outside of firewall/router roles. With various MMORGs, graphic intensive apps, and a good number of Desktop Office / Application Suites being tested and used on Wine, and with the improvement of Virtualization Software, more (and that includes new) *NIX users can forgo the need to have a Windows Box or Dual Boot - at home and at work.
I posted a document; and will list a few URLs on OBSD Man Pages and other malloc reference material here (attaching them one by one seems tedious).
My recommendation are to have someone from the WINE dev team: a) Contact Openports.se's WINE maintainer (and join their team)... b) Contact OBSD's camp and sign up to their misc, dev, and ports mailing lists... c) Sign up with Daemonforums.org and start a thread in the OpenBSD portion of the forum... ...to start a dialog and see if anyone's willing to take a look at your code and help you tackle this malloc issue and others. Maybe you may be able to invite several of their developers to sign up here as well.
You'll run into people who are strict in procedure; but you actually do need people like that on your team to write good code overall.
Without further delay, here are the links: Old Articles -malloc article for OBSD 3.8 http://kerneltrap.org/node/5584 -an O'Reilly interview with several OBSD gurus on the (then) "new" malloc http://onlamp.com/pub/a/bsd/2005/10/20/openbsd_3_8.html?page=last -older wiki article on malloc - citing OBSD segfaults... http://en.wikipedia.org/wiki/Malloc#OpenBSD.27s_malloc -a detailed explanation of Address Space Layout Randomization (ASLR) http://en.wikipedia.org/wiki/Address_space_layout_randomization
OBSD Man Pages for Malloc(3) Subroutine *** http://www.openbsd.org/cgi-bin/man.cgi?query=cfree&sektion=3&apropos... free(3) Subroutine *** http://www.openbsd.org/cgi-bin/man.cgi?query=free&apropos=0&sektion=... mmap(2) System Call *** http://www.openbsd.org/cgi-bin/man.cgi?query=mmap&apropos=0&sektion=... munmap(2) System Call *** http://www.openbsd.org/cgi-bin/man.cgi?query=munmap&sektion=2&arch=i... mprotect(2) System Call *** http://www.openbsd.org/cgi-bin/man.cgi?query=mprotect&sektion=2
Hope these help.