Good morning. I am actually working on a apache module which uses apr_dbd.
Here is what I need to do : In a mysql database I have a table which stores files splitted in 64Kb rows each and stored in a BLOB. I get (almost) all the code working fine so far except for the most important point. I am not able to fetch BLOBs, whenever I try to use apr_dbd_datum_get, Apache crashes. I am sure this is due to a wrong use of the API, but I can not find my mistake. Hence my question : is there any example of apr_dbd_datum_get ? I googled and searched in other modules but found nothing. The actual code is below but I am sure it is wrong (stupid ?) : [...] void *data = NULL; [...] for (rv = apr_dbd_get_row(dbd->driver, r->pool, res, &row, -1); rv != -1; rv = apr_dbd_get_row(dbd->driver, r->pool, res, &row, -1)) { data = apr_palloc(r->pool, 65536); /* TODO : output filedata : BLOB */ if( apr_dbd_datum_get(dbd->driver, row, 3, APR_DBD_TYPE_BLOB, data) == -1 ) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "Unable to fetch BLOB"); } } And the backtrace : Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_PROTECTION_FAILURE at address: 0x0000000c 0x00130eb2 in apr_bucket_alloc (size=36, list=0x0) at buckets/apr_buckets_alloc.c:120 120 apr_memnode_t *active = list->blocks; (gdb) bt #0 0x00130eb2 in apr_bucket_alloc (size=36, list=0x0) at buckets/apr_buckets_alloc.c:120 #1 0x006ed9a7 in apr_bucket_lob_create (row=0x720018, col=3, offset=0, len=65535, p=0x18f1c18, list=0x0) at dbd/apr_dbd_mysql.c:203 #2 0x006ee0c3 in dbd_mysql_datum_get (row=0x720018, n=3, type=APR_DBD_TYPE_BLOB, data=0x11f8018) at dbd/apr_dbd_mysql.c:437 #3 0x00147e99 in apr_dbd_datum_get (driver=0x6f00c0, row=0x720018, col=3, type=APR_DBD_TYPE_BLOB, data=0x11f8018) at dbd/apr_dbd.c:558 #4 0x006e5cf8 in ezclustered_image_handler (r=0x18f1c58) at mod_ezclustered_image.c:149 #5 0x0001b716 in ap_run_handler (r=0x18f1c58) at config.c:157 #6 0x0001bf5c in ap_invoke_handler (r=0x18f1c58) at config.c:372 #7 0x0002d43f in ap_process_request (r=0x18f1c58) at http_request.c:258 #8 0x000296d4 in ap_process_http_connection (c=0x18d31c0) at http_core.c:190 #9 0x000246f5 in ap_run_process_connection (c=0x18d31c0) at connection.c:43 #10 0x00024b6e in ap_process_connection (c=0x18d31c0, csd=0x18d2e58) at connection.c:178 #11 0x00033fe4 in child_main (child_num_arg=0) at prefork.c:650 #12 0x00034104 in make_child (s=0x1808310, slot=0) at prefork.c:690 #13 0x000347b6 in ap_mpm_run (_pconf=0x1806418, plog=0x1834418, s=0x1808310) at prefork.c:966 #14 0x00003215 in main (argc=2, argv=0xbffff74c) at main.c:730 Thanks in advance for any help and please accept my excuses if my question is utter stupid. Have a nice day Best Regards. -- Jérôme :)