linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: David Jander <david.jander@protonic.nl>
To: linuxppc-embedded@ozlabs.org
Cc: Russell McGuire <rmcguire@uwbt.com>
Subject: Re: Qt,  forks and threads = segmentation faults?
Date: Mon, 30 Jan 2006 10:42:52 +0100	[thread overview]
Message-ID: <200601301042.53254.david.jander@protonic.nl> (raw)
In-Reply-To: <000301c623a2$13b98fc0$6405a8c0@absolut>


Hi Russell,

On Saturday 28 January 2006 01:30, Russell McGuire wrote:
> This is a more general question, and if anyone knows of a more specialized
> list this should be posted to, I'd be happy to do so...
>
> Small picture of hardware:
> DENX Linux 2.4.25 / PowerPC MPC8280 / 32 MBs of RAM
>
> I am using QT Embedded for a small GUI that does BSD sockets, also using
> DENX's SM501 video driver. Everything is quite stable, recently I added a
> additional process to the application using fork() for the listening
> 'accept' call for the sockets.
>
> After many tests I decided that due to the nature of the fork() command and
> the GUI half of the program, that this was a large waste of memory, as I
> was duplicating the entire GUI system. So I started looking alternatives,
> and have landed at the 'pthread' library.

It shouldn't be a waste of memory, since Linux uses copy-on-write for memory 
pages. That means, although it looks like your child process wates a lot of 
memory (same initial VSS size as parent), it actually shares its memory with 
the parent until the child starts modifying memory contents (write fault 
occurs). At that moment the page being written to is copied, and the write 
access succeeds on the copied page. So fork() is nowadays quite efficient in 
linux systems..... exactly as efficient as creating a thread.

> However, now I have lots of segmentation faults, particularly when I send a
> message using QT's postEvent commands back to the main thread.

Eeek. You might want to compile QT with thread support compiled in (don't know 
if that helps though).
Anyway, it is probably a better idea to stick with fork() (see above).

> I was curious if anyone had any better idea of a more stable or perhaps a
> suggestion on why I am able to only get about 30 seconds of run time out of
> the app using pthread, verses fork() seems to be much stabler.

Use fork().

Greetings,

-- 
David Jander

      reply	other threads:[~2006-01-30  9:43 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.126.1138386609.857.linuxppc-embedded@ozlabs.org>
2006-01-28  0:30 ` Qt, forks and threads = segmentation faults? Russell McGuire
2006-01-30  9:42   ` David Jander [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200601301042.53254.david.jander@protonic.nl \
    --to=david.jander@protonic.nl \
    --cc=linuxppc-embedded@ozlabs.org \
    --cc=rmcguire@uwbt.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).