Package: libglpk0 Version: 4.45-1 Severity: normal Tags: upstream please compile and run glpk_bug_read_gz.c $ gcc glpk_bug_read_gz.c -lglpk -o glpk_bug_read_gz
The program is based on glpk-4.52.1/examples/sample.c and contains various write/read commands. The write/read pair fails (it is the only one). fprintf(stdout, "glpk version %s\n", glp_version()); glp_write_lp(lp, NULL, "temp_lp.gz"); glp_read_lp(lp, NULL, "temp_lp.gz"); The terminal output for this program reads: $ ./glpk_bug_read_gz glpk version 4.52 Writing problem data to 'temp_lp.gz'... 11 lines were written Reading problem data from 'temp_lp.gz'... temp_lp.gz:12: read error - The bug is reproduced with glpk-4.45 as well. -- System Information: Debian Release: jessie/sid APT prefers testing APT policy: (500, 'testing') Architecture: i386 (i686) Kernel: Linux 3.9-1-686-pae (SMP w/1 CPU core) Locale: LANG=en_NZ.UTF-8, LC_CTYPE=en_NZ.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages libglpk0 depends on: ii libc6 2.17-7 ii libgmp10 2:5.1.2+dfsg-2 ii libltdl7 2.4.2-1.3 ii zlib1g 1:1.2.8.dfsg-1 libglpk0 recommends no packages. Versions of packages libglpk0 suggests: ii libiodbc2-dev 3.52.7-3 ii libmysqlclient-dev 5.5.31+dfsg-1 -- no debconf information
/* sample.c */ #include <stdio.h> #include <stdlib.h> #include <glpk.h> int main(void) { glp_prob *lp; int ia[1+1000], ja[1+1000]; double ar[1+1000], z, x1, x2, x3; s1: lp = glp_create_prob(); s2: glp_set_prob_name(lp, "sample"); s3: glp_set_obj_dir(lp, GLP_MAX); s4: glp_add_rows(lp, 3); s5: glp_set_row_name(lp, 1, "p"); s6: glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 100.0); s7: glp_set_row_name(lp, 2, "q"); s8: glp_set_row_bnds(lp, 2, GLP_UP, 0.0, 600.0); s9: glp_set_row_name(lp, 3, "r"); s10: glp_set_row_bnds(lp, 3, GLP_UP, 0.0, 300.0); s11: glp_add_cols(lp, 3); s12: glp_set_col_name(lp, 1, "x1"); s13: glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0); s14: glp_set_obj_coef(lp, 1, 10.0); s15: glp_set_col_name(lp, 2, "x2"); s16: glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0); s17: glp_set_obj_coef(lp, 2, 6.0); s18: glp_set_col_name(lp, 3, "x3"); s19: glp_set_col_bnds(lp, 3, GLP_LO, 0.0, 0.0); s20: glp_set_obj_coef(lp, 3, 4.0); s21: ia[1] = 1, ja[1] = 1, ar[1] = 1.0; /* a[1,1] = 1 */ s22: ia[2] = 1, ja[2] = 2, ar[2] = 1.0; /* a[1,2] = 1 */ s23: ia[3] = 1, ja[3] = 3, ar[3] = 1.0; /* a[1,3] = 1 */ s24: ia[4] = 2, ja[4] = 1, ar[4] = 10.0; /* a[2,1] = 10 */ s25: ia[5] = 3, ja[5] = 1, ar[5] = 2.0; /* a[3,1] = 2 */ s26: ia[6] = 2, ja[6] = 2, ar[6] = 4.0; /* a[2,2] = 4 */ s27: ia[7] = 3, ja[7] = 2, ar[7] = 2.0; /* a[3,2] = 2 */ s28: ia[8] = 2, ja[8] = 3, ar[8] = 5.0; /* a[2,3] = 5 */ s29: ia[9] = 3, ja[9] = 3, ar[9] = 6.0; /* a[3,3] = 6 */ s30: glp_load_matrix(lp, 9, ia, ja, ar); fprintf(stdout, "glpk version %s\n", glp_version()); /* glp_write_prob(lp, 0, "temp_prob"); glp_read_prob(lp, 0, "temp_prob"); glp_write_prob(lp, 0, "temp_prob.gz"); glp_read_prob(lp, 0, "temp_prob.gz"); glp_write_lp(lp, NULL, "temp_lp"); glp_read_lp(lp, NULL, "temp_lp"); */ glp_write_lp(lp, NULL, "temp_lp.gz"); glp_read_lp(lp, NULL, "temp_lp.gz"); /* glp_write_mps(lp, GLP_MPS_FILE, NULL, "temp_mps"); glp_read_mps(lp, GLP_MPS_FILE, NULL, "temp_mps"); glp_write_mps(lp, GLP_MPS_FILE, NULL, "temp_mps.gz"); glp_read_mps(lp, GLP_MPS_FILE, NULL, "temp_mps.gz"); */ s37: glp_delete_prob(lp); return 0; } /* eof */