If your code is portable, I'd suggest debugging it on linux.

--Wez.

On 2/26/06, D. Walsh <[EMAIL PROTECTED]> wrote:
>
> On Feb 24, 2006, at 07:11 , Wez Furlong wrote:
>
> > My suggestion is to download, compile and use valgrind and see what
> > problems that highlights in your code.
>
> Since you are specifically directing me to do this I will attempt to
> get valgrind installed and working in Mac OSX, as soon as I have that
> done I'll update you so we can proceed further.
>
> -- Dale
>
> > --Wez.
> >
> > On 2/23/06, D. Walsh <[EMAIL PROTECTED]> wrote:
> >> Anyone have any ideas or see the problem here???
> >>
> >> On Feb 22, 2006, at 24:48 , D. Walsh wrote:
> >>
> >>> I had an issue with an extension that I previously posted to this
> >>> list and it was suggested I update to the newer API which might
> >>> provide a solution to the problem.
> >>>
> >>> Taking a somewhat safe approach I tackled converting the rrdtool
> >>> extension first since it was similar in functionality and protocol
> >>> to my ramdisk extension.
> >>>
> >>> Trying to convert to the new API wasn't as easy as it had been
> >>> suggested/reported.
> >>>
> >>> Steph Fox and I worked on it for several days before we finally got
> >>> it worked out.
> >>>
> >>> I tested the extension for the last week under Apache 1.3.33 and
> >>> found that the extension seemed to take less time to perform it's
> >>> functions which was well worth the effort to convert to the newer
> >>> API so thank you for the kick in this area.
> >>>
> >>> I then compiled for Apache 2 and found that I was still
> >>> experiencing the same issues so I'm sad to report that this did not
> >>> correct the problem.
> >>>
> >>> I realize that hearing "it doesn't work" or  "it failed" isn't
> >>> descriptive so I'll try to provide a little more information on the
> >>> problem.
> >>>
> >>> Bear in mind that I have stepped back in time a little and have
> >>> gone with linking the RRDTool library in an attempt to remove as
> >>> many unknown variables from the equation as I possibly could and
> >>> allow testing with various version of the RRDTool library but the
> >>> RRDTool extension Tobias and I will be submitting for bundling with
> >>> PHP will not require linking to an external RRDTool library as it
> >>> will be entirely self contained however, the ability to link to an
> >>> external RRDTool library will be available provided we can get all
> >>> of our ducks in a row and satisfy the PHP license requirements
> >>> (which may already be the case).
> >>>
> >>> Building PHP for Apache 1.3, a php script calls the rrd_graph
> >>> function with a string (filename), an array (data to process) and a
> >>> long  (the array count) and returns an array containing the
> >>> generated output file details.
> >>>
> >>> PHP seems to pass the variables to the linked library function
> >>> without any issues, generates the output file and returns an array
> >>> of the details with success.
> >>>
> >>>
> >>> Building PHP for Apache 2.0 and Apache 2.2, passing the same
> >>> information should yield the same results but it doesn't.
> >>>
> >>> The output file is never generated, the library complains that the
> >>> array being passed is incomplete and invalid and no array is
> >>> returned.
> >>>
> >>> I've tried using both 1.0.x and 1.2.x versions of the RRDTool
> >>> library which resulted in the same issue so I've ruled out the
> >>> library function as the cause of the problem since they all worked
> >>> as expected when building PHP for Apache 1.3.
> >>>
> >>> Here's the entire rrd_graph function currently being used in the
> >>> testing phase, I've gone over the available API with Steph who
> >>> provided a lot of time, insight and assistance in helping me
> >>> convert to the new API so at this time I'm not sure what the issue
> >>> is or how to resolve it so if someone has ideas or sees a problem
> >>> I'd be most grateful to hear about it.
> >>>
> >>> ____________________________________________________________________
> >>> __
> >>> _______________________________
> >>>
> >>> PHP_FUNCTION(rrd_graph)
> >>> {
> >>>     char *file;
> >>>     zval *args, *entry, *p_calcpr;
> >>>     HashTable *args_arr;
> >>>     char **argv, **calcpr;
> >>>     long php_argc, argc;
> >>>     uint file_len;
> >>>     int xsize, ysize, i = 0;
> >>>     double ymin = 0.0, ymax = 0.0;
> >>>
> >>>
> >>>       if ( rrd_test_error() )
> >>>               rrd_clear_error();
> >>>
> >>>     if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sal",
> >>> &file, &file_len, &args, &php_argc) == FAILURE)
> >>>     {
> >>>         return;
> >>>     }
> >>>               if ( args->type != IS_ARRAY )
> >>>               {
> >>>                       php_error(E_WARNING, "2nd Variable passed
> >>> to rrd_graph is not an
> >>> array!\n");
> >>>                       RETURN_FALSE;
> >>>               }
> >>>
> >>>     args_arr = args->value.ht;
> >>>     argc = php_argc + 3;
> >>>     argv = (char **) emalloc(argc * sizeof(char *));
> >>>
> >>>     argv[0] = estrdup("dummy");
> >>>     argv[1] = estrdup("graph");
> >>>     argv[2] = estrndup(file, file_len);
> >>>
> >>>
> >>>               for (i = 3; i < argc; i++)
> >>>               {
> >>>                       zval **dataptr;
> >>>
> >>>                       if ( zend_hash_get_current_data(args_arr,
> >>> (void *) &dataptr) ==
> >>> FAILURE )
> >>>                               continue;
> >>>
> >>>                       entry = *dataptr;
> >>>
> >>>                       if ( entry->type != IS_STRING )
> >>>                               convert_to_string(entry);
> >>>
> >>>                       argv[i] = estrdup(entry->value.str.val);
> >>>
> >>>                       if ( i < argc )
> >>>                               zend_hash_move_forward(args_arr);
> >>>               }
> >>>
> >>>               optind = 0; opterr = 0;
> >>> #if HAVE_RRD_12X
> >>>               if ( rrd_graph(argc-1, &argv[1], &calcpr, &xsize,
> >>> &ysize, NULL,
> >>> &ymin, &ymax) != FAILURE )
> >>>               {
> >>> #else
> >>>               if ( rrd_graph(argc-1, &argv[1], &calcpr, &xsize,
> >>> &ysize) !=
> >>> FAILURE )
> >>>               {
> >>> #endif
> >>>                       array_init(return_value);
> >>>                       add_assoc_long(return_value, "xsize", xsize);
> >>>                       add_assoc_long(return_value, "ysize", ysize);
> >>>
> >>>                       MAKE_STD_ZVAL(p_calcpr);
> >>>                       array_init(p_calcpr);
> >>>
> >>>                       if (calcpr)
> >>>                       {
> >>>                               for (i = 0; calcpr[i]; i++)
> >>>                               {
> >>>                                       add_next_index_string
> >>> (p_calcpr, calcpr[i], 1);
> >>>                                       free(calcpr[i]);
> >>>                               }
> >>>                               free(calcpr);
> >>>                       }
> >>>                       zend_hash_update(return_value->value.ht,
> >>> "calcpr", sizeof
> >>> ("calcpr"),
> >>>                                                       (void *)
> >>> &p_calcpr, sizeof(zval *), NULL);
> >>>               }
> >>>               else
> >>>               {
> >>>                       RETVAL_FALSE;
> >>>               }
> >>>               for (i = 1; i < argc; i++)
> >>>                       efree(argv[i]);
> >>>
> >>>               efree(argv);
> >>>       return;
> >>> }
> >>>
> >>> --
> >>> PHP Internals - PHP Runtime Development Mailing List
> >>> To unsubscribe, visit: http://www.php.net/unsub.php
> >>>
> >>>
> >>
> >> --
> >> PHP Internals - PHP Runtime Development Mailing List
> >> To unsubscribe, visit: http://www.php.net/unsub.php
> >>
> >>
> >
> > --
> > PHP Internals - PHP Runtime Development Mailing List
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
>
>

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to