[haiku-bugs] Re: [Haiku] #12438: Implement brk and sbrk

  • From: "oco" <trac@xxxxxxxxxxxx>
  • Date: Mon, 13 Jun 2016 00:50:23 -0000

#12438: Implement brk and sbrk
----------------------------+----------------------------
   Reporter:  simonsouth    |      Owner:  nobody
       Type:  enhancement   |     Status:  closed
   Priority:  normal        |  Milestone:  Unscheduled
  Component:  System/POSIX  |    Version:  R1/Development
 Resolution:  fixed         |   Keywords:
 Blocked By:                |   Blocking:
Has a Patch:  0             |   Platform:  All
----------------------------+----------------------------

Comment (by oco):

 Freepascal memory allocation strategy is describe here :
 http://www.freepascal.org/docs-html/prog/progsu174.html#x220-2330008.4.2.
 The OS memory allocation function should be able to allocate as much
 memory as possible on the system (like mmap can do).

 Freepascal itself does not require much more libraries than libroot.so.
 But programs compiled with Freepascal could potentially load any libraries
 available on the system (libnet.so for sockets functions for example).

 It would be interesting to know exactly what was broken in the previous
 implementation with GNU Emacs that lead to the new one (maybe the
 allocated space was not contiguous to the data segment of the main
 binary). I doubt GNU Emacs never use more than 384 MB. Maybe, it is
 related to the build process as hinted by this mail :
 http://www.openwall.com/lists/musl/2015/02/03/1.

 Excerpt of listarea (with ASLR, in a "favorable" case where the main
 binary is just before the heap, it is not always the case)

 {{{
 ...
  9163                        tt_seg0ro  0x1347000     1000        0     0
 0     0
  9164                        tt_seg1rw  0x1348000     1000     1000     0
 0     0
  9168                             heap  0x189a7000    40000     9000     0
 0     0
 ...
 }}}


 For this to work, if i understand things correctly (i will not bet on
 this;-), the main binary should be always the upper one in memory (with
 ASLR, the starting point can still be different between loads, but less
 random than the current scheme) and the heap/sbrk area should start just
 after that (to avoid the gap in the above excerpt). Some additional
 provisions might be required to reserve space for shared objects that
 could be dynamically loaded.

--
Ticket URL: <https://dev.haiku-os.org/ticket/12438#comment:11>
Haiku <https://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: