Sun Jun 8 01:55:20 PDT 2008
- Previous message: [Slony1-general] slonik segfault
- Next message: [Slony1-general] slonik segfault
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Here you can find the script which raises a segmentation fault : http://pastebin.com/m1524b62f To make it works you can apply the following patch : --- script_with_error.slk 2008-06-02 18:30:23.000000000 +0200 +++ script_with_success.slk 2008-06-06 16:44:35.000000000 +0200 @@ -151,6 +151,9 @@ set add table (set id=8, origin=201, id=137, fully qualified name = 'public.t_137', comment='table 137'); set add table (set id=8, origin=201, id=138, fully qualified name = 'public.t_138', comment='table 138'); set add table (set id=8, origin=201, id=139, fully qualified name = 'public.t_139', comment='table 139'); + +# creation set 9 +# create set (id=9, origin=201, comment='set number 9'); set add table (set id=9, origin=201, id=140, fully qualified name = 'public.t_140', comment='table 140'); set add table (set id=9, origin=201, id=141, fully qualified name = 'public.t_141', comment='table 141'); @@ -391,6 +394,10 @@ set add table (set id=21, origin=201, id=364, fully qualified name = 'public.t_364', comment='table 364'); set add table (set id=21, origin=201, id=365, fully qualified name = 'public.t_365', comment='table 365'); set add table (set id=21, origin=201, id=366, fully qualified name = 'public.t_366', comment='table 366'); + +# creation du set 22 +# + create set (id=22, origin=201, comment='set number 22'); set add table (set id=22, origin=201, id=367, fully qualified name = 'public.t_367', comment='table 367'); set add table (set id=22, origin=201, id=368, fully qualified name = 'public.t_368', comment='table 368'); @@ -410,6 +417,7 @@ set add table (set id=22, origin=201, id=382, fully qualified name = 'public.t_382', comment='table 382'); set add table (set id=22, origin=201, id=383, fully qualified name = 'public.t_383', comment='table 383'); set add table (set id=22, origin=201, id=384, fully qualified name = 'public.t_384', comment='table 384'); + create set (id=23, origin=201, comment='set number 23'); set add table (set id=23, origin=201, id=385, fully qualified name = 'public.t_385', comment='table 385'); set add table (set id=23, origin=201, id=386, fully qualified name = 'public.t_386', comment='table 386'); @@ -428,6 +436,9 @@ set add table (set id=23, origin=201, id=399, fully qualified name = 'public.t_399', comment='table 399'); set add table (set id=23, origin=201, id=400, fully qualified name = 'public.t_400', comment='table 400'); set add table (set id=23, origin=201, id=401, fully qualified name = 'public.t_401', comment='table 401'); + +# creation set 24 +# create set (id=24, origin=201, comment='set number 24'); set add table (set id=24, origin=201, id=402, fully qualified name = 'public.t_402', comment='table 402'); set add table (set id=24, origin=201, id=403, fully qualified name = 'public.t_403', comment='table 403'); @@ -447,6 +458,9 @@ set add table (set id=24, origin=201, id=417, fully qualified name = 'public.t_417', comment='table 417'); set add table (set id=24, origin=201, id=418, fully qualified name = 'public.t_418', comment='table 418'); set add table (set id=24, origin=201, id=419, fully qualified name = 'public.t_419', comment='table 419'); + +# creation set 25 +# create set (id=25, origin=201, comment='set number 25'); set add table (set id=25, origin=201, id=420, fully qualified name = 'public.t_420', comment='table 420'); set add table (set id=25, origin=201, id=421, fully qualified name = 'public.t_421', comment='table 421'); As you can see there's no much difference between them ... Regards Christopher Browne wrote: > Cyril SCETBON <scetbon at echo.fr> writes: > >> When I try to create a lot of set slonik dies with segmentation fault >> message. The only way to succeed is to split the file containing the >> create set statement and to try them one by one or two by two. When I >> use strace on slonik it displays : >> >> read(3, "#--\n# Slony-I organizes tables i"..., 8192) = 8192 >> read(3, "d table (set id=5, origin=201, i"..., 8192) = 8192 >> read(3, ");\nset add table (set id=9, orig"..., 8192) = 8192 >> mmap(NULL, 18446744073709547520, PROT_READ|PROT_WRITE, >> MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory) >> >> Is there a maximum number of lines ? a memory parameter to use with slonik ? >> >> thanks >> > > We're using Bison to generate the parser, and it normally doesn't > present any particular fixed limits on how much data it can handle. > > I just ran a test run where I created 500 tables and then added them, > in one fell swoop, to replication, using the sample script... > Attached is a patch that may be applied to the sample script in the > Slony-I source tree to get the same results. > > With 500 tables to set up and copy, even though they were empty, it > took 452 seconds to apply the subscription. (Cheap desktop PC :-).) > > I encountered no problems. Might there be something odd about your > platform where your OS defines stack size for programs to be rather > small? That doesn't make *much* sense; if such an effect were > breaking slonik, then it ought to be breaking other things, like maybe > your PostgreSQL instance! > > Here's an excerpt of the set creation slonik script: > > include </tmp/slonytest-temp.A24149/preamble.slonik>; > create set (id=1, origin=1, comment='SLONTEST82 Tables and Sequences'); > set add table (id=1, set id=1, origin=1, fully qualified name='public.t1', comment='SLONTEST82 table public.t1'); > set add table (id=2, set id=1, origin=1, fully qualified name='public.t2', comment='SLONTEST82 table public.t2'); > set add table (id=3, set id=1, origin=1, fully qualified name='public.t3', comment='SLONTEST82 table public.t3'); > set add table (id=4, set id=1, origin=1, fully qualified name='public.t4', comment='SLONTEST82 table public.t4'); > set add table (id=5, set id=1, origin=1, fully qualified name='public.t5', comment='SLONTEST82 table public.t5'); > ... > set add table (id=494, set id=1, origin=1, fully qualified name='public.t494', comment='SLONTEST82 table public.t494'); > set add table (id=495, set id=1, origin=1, fully qualified name='public.t495', comment='SLONTEST82 table public.t495'); > set add table (id=496, set id=1, origin=1, fully qualified name='public.t496', comment='SLONTEST82 table public.t496'); > set add table (id=497, set id=1, origin=1, fully qualified name='public.t497', comment='SLONTEST82 table public.t497'); > set add table (id=498, set id=1, origin=1, fully qualified name='public.t498', comment='SLONTEST82 table public.t498'); > set add table (id=499, set id=1, origin=1, fully qualified name='public.t499', comment='SLONTEST82 table public.t499'); > set add table (id=500, set id=1, origin=1, fully qualified name='public.t500', comment='SLONTEST82 table public.t500'); > set add sequence (id=1, set id=1, origin=1, fully qualified name='public.t1_id_seq', comment='SLONTEST82 sequence public.t1_id_seq'); > set add sequence (id=2, set id=1, origin=1, fully qualified name='public.t2_id_seq', comment='SLONTEST82 sequence public.t2_id_seq'); > set add sequence (id=3, set id=1, origin=1, fully qualified name='public.t3_id_seq', comment='SLONTEST82 sequence public.t3_id_seq'); > set add sequence (id=4, set id=1, origin=1, fully qualified name='public.t4_id_seq', comment='SLONTEST82 sequence public.t4_id_seq'); > set add sequence (id=5, set id=1, origin=1, fully qualified name='public.t5_id_seq', comment='SLONTEST82 sequence public.t5_id_seq'); > set add sequence (id=6, set id=1, origin=1, fully qualified name='public.t6_id_seq', comment='SLONTEST82 sequence public.t6_id_seq'); > set add sequence (id=7, set id=1, origin=1, fully qualified name='public.t7_id_seq', comment='SLONTEST82 sequence public.t7_id_seq'); > ... > set add sequence (id=496, set id=1, origin=1, fully qualified name='public.t496_id_seq', comment='SLONTEST82 sequence public.t496_id_seq'); > set add sequence (id=497, set id=1, origin=1, fully qualified name='public.t497_id_seq', comment='SLONTEST82 sequence public.t497_id_seq'); > set add sequence (id=498, set id=1, origin=1, fully qualified name='public.t498_id_seq', comment='SLONTEST82 sequence public.t498_id_seq'); > set add sequence (id=499, set id=1, origin=1, fully qualified name='public.t499_id_seq', comment='SLONTEST82 sequence public.t499_id_seq'); > set add sequence (id=500, set id=1, origin=1, fully qualified name='public.t500_id_seq', comment='SLONTEST82 sequence public.t500_id_seq'); > > Here's the CVS diff: > > chris at dba2:Slony-I/CMD/slony1-1.2/tools> cvs diff -u configure-replication.sh > Index: configure-replication.sh > =================================================================== > RCS file: /home/cvsd/slony1/slony1-engine/tools/configure-replication.sh,v > retrieving revision 1.1.2.4 > diff -c -u -r1.1.2.4 configure-replication.sh > cvs diff: conflicting specifications of output style > --- configure-replication.sh 6 Mar 2008 18:49:03 -0000 1.1.2.4 > +++ configure-replication.sh 6 Jun 2008 15:43:33 -0000 > @@ -6,6 +6,13 @@ > NUMNODES=${NUMNODES:-"2"} > > # Defaults - origin node > +DB1=db1 > +DB2=db2 > +HOST1=localhost > +HOST2=localhost > +PORT1=5882 > +PORT2=5882 > + > DB1=${DB1:-${PGDATABASE:-"slonytest"}} > HOST1=${HOST1:-`hostname`} > USER1=${USER1:-${PGUSER:-"slony"}} > @@ -117,15 +124,18 @@ > recurringemail recurringprint session shipto sic status tax > transactions translation vendor vendortax warehouse yearend" > > +ALTTABLES1="" > +ALTSEQUENCES1="" > +for i in `seq 500`; do > + ALTTABLES1="$ALTTABLES1 t${i}" > + ALTSEQUENCES1="$ALTSEQUENCES1 t${i}_id_seq" > + psql -h $HOST1 -p $PORT1 -d $DB1 -c "create table t${i} (id serial primary key, data text not null unique);" > + psql -h $HOST2 -p $PORT2 -d $DB2 -c "create table t${i} (id serial primary key, data text not null unique);" > +done > + > for t in `echo $ALTTABLES1`; do > ALTTABLES="$ALTTABLES public.${t}" > done > - > -ALTSEQUENCES1="acc_trans_entry_id_seq audittrail_entry_id_seq > - custom_field_catalog_field_id_seq custom_table_catalog_table_id_seq > - id inventory_entry_id_seq invoiceid jcitemsid orderitemsid > - partscustomer_entry_id_seq partsvendor_entry_id_seq > - session_session_id_seq shipto_entry_id_seq" > > for s in `echo $ALTSEQUENCES1`; do > ALTSEQUENCES="$ALTSEQUENCES public.${s}" > > -- Cyril SCETBON - Ingénieur bases de données AUSY pour France Télécom - OPF/PORTAILS/DOP/HEBEX Tél : +33 (0)4 97 12 87 60 Jabber : cscetbon at jabber.org France Telecom - Orange 790 Avenue du Docteur Maurice Donat Bâtiment Marco Polo C2 - Bureau 202 06250 Mougins France *********************************** Ce message et toutes les pieces jointes (ci-apres le 'message') sont confidentiels et etablis a l'intention exclusive de ses destinataires. Toute utilisation ou diffusion non autorisee est interdite. Tout message electronique est susceptible d'alteration. Le Groupe France Telecom decline toute responsabilite au titre de ce message s'il a ete altere, deforme ou falsifie. Si vous n'etes pas destinataire de ce message, merci de le detruire immediatement et d'avertir l'expediteur. *********************************** This message and any attachments (the 'message') are confidential and intended solely for the addressees. Any unauthorised use or dissemination is prohibited. Messages are susceptible to alteration. France Telecom Group shall not be liable for the message if altered, changed or falsified. If you are not recipient of this message, please cancel it immediately and inform the sender. ************************************
- Previous message: [Slony1-general] slonik segfault
- Next message: [Slony1-general] slonik segfault
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-general mailing list