ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] Странный segmentation fault - помогите разобраться
@ 2006-07-07 16:23 Olvin
  2006-07-07 17:47 ` Хихин Руслан
  2006-07-08  5:00 ` Damir Shayhutdinov
  0 siblings, 2 replies; 4+ messages in thread
From: Olvin @ 2006-07-07 16:23 UTC (permalink / raw)
  To: ALT Linux Community

Вот такая програмка (файл test.c):

#include <fcntl.h>
int main (int argc, char *argv[]) {
  int fd,tmp,a;
  struct stat *buf;
  void *fb;
  fd = open("/tmp/tst",O_RDONLY);
  tmp = fstat(fd,buf);
}

Компиляция:

$ cc -o test test.c

Запуск:

$ touch /tmp/tst
$ ./test
Segmentation fault
$

Но стоит изменить int fd,tmp,a на int fd,tmp и уже не сегфолтится. 
Однако при попытке распечатать с помощью того же printf значение tmp - 
снова сегфолт.

В чём дело?

$ cc --version
2.96
$ uname -a
Linux olvin.enigma.local 2.4.26-std-up-alt13 #1 Mon Nov 14 00:25:14 MSK 
2005 i686 unknown unknown GNU/Linux

ALM2.4.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Comm] Странный segmentation fault - помогите разобраться
  2006-07-07 16:23 [Comm] Странный segmentation fault - помогите разобраться Olvin
@ 2006-07-07 17:47 ` Хихин Руслан
  2006-07-08  9:49   ` Olvin
  2006-07-08  5:00 ` Damir Shayhutdinov
  1 sibling, 1 reply; 4+ messages in thread
From: Хихин Руслан @ 2006-07-07 17:47 UTC (permalink / raw)
  To: community

[-- Attachment #1: Type: text/plain, Size: 742 bytes --]

Здравствуйте Olvin
  В сообщении от 7 июля 2006 20:23 Olvin написал(a):
 > Вот такая програмка (файл test.c):
 >
 >
 >
 > #include <fcntl.h>
 >
 > int main (int argc, char *argv[]) {
 >
 >   int fd,tmp,a;
 >
 >   struct stat *buf;
 >
 >   void *fb;
 >
 >   fd = open("/tmp/tst",O_RDONLY);
 >
 >   tmp = fstat(fd,buf);
 >
 > }
 >
Под структуру stat вы не отвели место (buf указывает неизвестно куда) - 
естественно после выполнения функции fstat задача разваливается - пишет 
неизвестно куда.
-- 
  А ещё говорят так  (fortune):
 
php у нас собирается так, чтобы каждый мог собрать себе все что нужно.
		-- lakostis in devel@
________________________________________________________________________
С уважением Хихин Руслан (hihin@rambler.ru)

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Comm] Странный segmentation fault - помогите разобраться
  2006-07-07 16:23 [Comm] Странный segmentation fault - помогите разобраться Olvin
  2006-07-07 17:47 ` Хихин Руслан
@ 2006-07-08  5:00 ` Damir Shayhutdinov
  1 sibling, 0 replies; 4+ messages in thread
From: Damir Shayhutdinov @ 2006-07-08  5:00 UTC (permalink / raw)
  To: ALT Linux Community

07.07.06, Olvin<olvin@rambler.ru> написал(а):
> Вот такая програмка (файл test.c):
Вот так надо:

 #include <fcntl.h>
 int main (int argc, char *argv[]) {
   int fd,tmp,a;
   struct stat buf;
   void *fb;
   fd = open("/tmp/tst",O_RDONLY);
   tmp = fstat(fd, &buf);
 }

Отличие - в том, что в fstat передается указатель на существующую
структуру (размещенную в стеке).

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Comm] Странный segmentation fault - помогите разобраться
  2006-07-07 17:47 ` Хихин Руслан
@ 2006-07-08  9:49   ` Olvin
  0 siblings, 0 replies; 4+ messages in thread
From: Olvin @ 2006-07-08  9:49 UTC (permalink / raw)
  To: hihin, ALT Linux Community

Хихин Руслан wrote:
>  > #include <fcntl.h>
>  >
>  > int main (int argc, char *argv[]) {
>  >
>  >   int fd,tmp,a;
>  >
>  >   struct stat *buf;
>  >
>  >   void *fb;
>  >
>  >   fd = open("/tmp/tst",O_RDONLY);
>  >
>  >   tmp = fstat(fd,buf);
>  >
>  > }
>  >
> Под структуру stat вы не отвели место (buf указывает неизвестно куда) - 
> естественно после выполнения функции fstat задача разваливается - пишет 
> неизвестно куда.

:)
Да, вот что значит давно к Си не притрагивался.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-07-08  9:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-07-07 16:23 [Comm] Странный segmentation fault - помогите разобраться Olvin
2006-07-07 17:47 ` Хихин Руслан
2006-07-08  9:49   ` Olvin
2006-07-08  5:00 ` Damir Shayhutdinov

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git